我从 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以避免不同控制器和视图的链接损坏问题。
您可以使用
$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" />
只需传递
['ext' => false]
作为第二个参数 ($options
):
$this->Html->css($mycss, ['ext' => false]);
src/View/Helper/HtmlHelper.php
→src/View/Helper/UrlHelper.php