2013-06-17 2 views
0

Я работаю на CakePHP 2.xнагрузки конкретный CSS и JS файлы для конкретной страницы просмотра в CakePHP

В настоящее время я управляю своими взглядами, как это: у меня есть default.ctp файла в моем View/layout folder, где все повторно используемые данные (например, меню, боковая панель, нижний колонтитул), и все файлы css и js также импортируются там. Затем у меня есть страницы просмотра в моем файле View/ControllerName/index.ctp, в котором я показываю записи.

Теперь я хочу загрузить определенные файлы css и js для определенной страницы просмотра. Как я могу управлять этим? Поскольку в то время все мои страницы просмотра получают все файлы css и js из файла default.ctp. Но я хочу также загрузить макет default.ctp, но я хочу, чтобы, предположим, я звоню на другую страницу просмотра, он выбирает некоторые файлы css и js из файла default.ctp и пропускает остальные файлы.

Надеюсь, вам понравится понять, что я пытаюсь сделать.

ответ

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')); 
?> 
1

В вашей функции AppController :: beforeRender(); добавьте следующую строку:

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

В файле default.ctp, вы можете сделать заявление if или switch на основе $ controller_name viewVar и отображать некоторые CSS/JS на основе значения этого.

Или вы можете просто добавить переопределения в другие файлы CSS и JS и называть их индивидуально на каждом конкретном представлении, которое вы хотите показать.