如何在CakePHP中选择性地从Html->css方法中删除.css扩展名?

问题描述 投票:0回答:2

我从 php 文件(custom2.php)动态生成 css 并将其内容类型设置为“text/css”以在客户端视图中呈现 css。此 php 文件位于 webroot 目录内的 css 文件夹中。当我用完整路径加载它时它效果很好。但是当我使用 Html 助手加载 php 文件时。它会自动附加“.css”扩展名。因此,Apache 默认不会渲染 php 文件并将其视为 css 文件..

当我使用完整路径加载它时(它可以工作),如下所示:-

<link rel="stylesheet" href="/Project1/css/custom2.php" />

但是当我以标准 cakephp 方式加载它时(它不起作用),如下所示:-

echo $this->Html-css("$mycss");  
/* It loads file after adding .css extension(custom2.php.css) which i don't want */

我从控制器(索引操作)传递 php 文件,如下所示:-

$this->set('mycss','custom2.php');

但是,添加 css 扩展是 Html 助手的默认行为,我希望它保持如此,除非我链接任何 php 文件。 是否有任何内联方法可以在特定情况/条件下禁用 css 扩展生成?

PS:我想使用标准的cakephp方法来加载css以避免不同控制器和视图的链接损坏问题。

php cakephp cakephp-2.6
2个回答
1
投票

您可以使用

$this->webroot
作为基本网址。所以在你的情况下

<link rel="stylesheet" href="<?php echo $this->webroot; ?>css/custom2.php" />

如果你想要完整的网址,试试这个

<link rel="stylesheet" href="<?php echo Router::url('/', true); ?>css/custom2.php" />


0
投票

只需传递

['ext' => false]
作为第二个参数 (
$options
):

$this->Html->css($mycss, ['ext' => false]);

源代码:

src/View/Helper/HtmlHelper.php
src/View/Helper/UrlHelper.php

© www.soinside.com 2019 - 2024. All rights reserved.