我正在开发Cakephp 2.x
目前,我正在管理我的观点是这样的:我的default.ctp
中有一个View/layout folder
文件,其中包含所有可重复使用的数据(例如菜单,侧栏,页脚)和所有css和js文件也在那里导入。然后我在我的View/ControllerName/index.ctp
文件中有一个查看页面,我在其中显示记录。
现在我想要的是为特定的视图页面加载特定的css和js文件。我怎么能管理这个?因为那时我的所有视图页面都从default.ctp文件获取所有css和js文件。但我想加载default.ctp布局,但我想如果让我假设我正在调用一个不同的视图页面,那么它从default.ctp中选择一些css和js文件并跳过剩下的文件
希望你明白我要做的事。
答案 0 :(得分:3)
这是一种可行的方法:
在beforeFilter
中的AppController
函数:
$this->set('loadXCss', false);
$this->set('loadYCss', false);
$this->set('loadZCss', false);
然后在任何Controller中,你应该决定是否显示css:
$this->set('loadZCss', true);
最后,在布局中:
<?php
echo this->Html->css('main.css', null, array('media' => 'screen,projection'));
if ( $loadXCss ) echo this->Html->css('x.css', null, array('media' => 'screen,projection'));
if ( $loadYCss ) echo this->Html->css('y.css', null, array('media' => 'screen,projection'));
if ( $loadZCss ) echo this->Html->css('z.css', null, array('media' => 'screen,projection'));
?>
答案 1 :(得分:1)
在你的AppController :: beforeRender()函数中;添加以下行:
$this->set('controller_name', $this->name);
在default.ctp文件中,您可以基于$ controller_name viewVar执行if
或switch
语句,并根据其值显示一些CSS / JS。
或者您可以简单地将覆盖添加到其他CSS和JS文件中,并在要显示的每个特定视图上单独调用它们。