CakePHP 2.0 css and scripts in element not being added to css/script blocks
我刚刚开始了一个使用 cakePHP 2.0 的项目。我正在使用一个元素来呈现侧边栏菜单。我想在菜单元素中为菜单指定 css 和 JS 文件,而不是在我的 head 标签中添加它们(以防我想有条件地呈现不同的侧边栏)。
出于某种原因,我的脚本和 CSS 没有被输出.. 有什么想法吗?
布局/Default.ctp
1 2 3 4 5 6 7 8 9 | <head> <?php echo $this->fetch('css'); echo $this->fetch('script'); ?> </head> .... <?php echo $this->element('sidebar/menu'); ?> |
元素/侧边栏/menu.ctp
1 2 3 4 5 6 7 8 9 10 | $this->Html->script('menu', array('inline' => false)); $this->Html->css('menu', null, array('inline' => false)); <ul> <li> Menu Item </li> </ul> |
CSS 和 javascript 分别在 webroot/css/menu.css 和 webroot/js/menu.js 中。
如果我将 Html->script 和 Html->css 声明放在视图文件或 home.ctp 或 default.ctp 中,它们将被添加到 css 和脚本块中并且输出正常。当它们在元素文件 menu.ctp 中声明时,它们不起作用。有什么我遗漏的吗?
1 2 3 4 5 6 7 8 9 10 | // css $this->start('css'); echo $this->Html->css('additionalstyle'); echo $this->Html->css('anotherstyle'); echo $this->end() // javascript $this->start('script') echo $this->Html->script('jquery'); $this->end() |
将此代码添加到您的 view.ctp
http://book.cakephp.org/2.0/en/views.html
1 2 | echo $this->Html->script('menu', array('inline' => false)); echo $this->Html->css('menu', null, array('inline' => false)); |
我想我遇到了问题。主要问题是css和js调用的顺序。
1 2 | echo $this->fetch('css'); echo $this->fetch('script'); |
这两行在 head 内呼应,即在调用你元素之前。所以这个问题有两种可能的解决方案:
从头部切入
...
...
echo $this->fetch(\\'css\\');
echo $this->fetch(\\'script\\');
制作
1 2 | echo $this->Html->script('myel', array('inline' => true)); echo $this->Html->css('mycss', null, array('inline' => true)); |
我想这会解决你的问题....