0

我正在开发 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 文件并跳过其余文件

希望你明白我想要做什么。

4

2 回答 2

3

这是一种可能的方法:在您的beforeFilter函数中AppController

$this->set('loadXCss', false);
$this->set('loadYCss', false);
$this->set('loadZCss', false);

然后在任何控制器中,您应该决定是否显示 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'));
?>
于 2013-06-19T07:37:29.187 回答
1

在您的 AppController::beforeRender() 函数中;添加以下行:

$this->set('controller_name', $this->name);

在您的 default.ctp 文件中,您可以根据 $controller_name viewVar 执行iforswitch语句,并根据它的值显示一些 CSS/JS。

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

于 2013-06-19T07:24:24.830 回答