在Cakephp中为特定视图页面加载特定的css和js文件

时间:2013-06-17 16:51:18

标签: cakephp cakephp-2.0 cakephp-2.1

我正在开发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文件并跳过剩下的文件

希望你明白我要做的事。

2 个答案:

答案 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执行ifswitch语句,并根据其值显示一些CSS / JS。

或者您可以简单地将覆盖添加到其他CSS和JS文件中,并在要显示的每个特定视图上单独调用它们。