Как динамически загрузить файл CSS для каждого действия в контроллере?
У меня есть контроллер с именем "Student" с двумя действиями, называемыми "index" и "add". Я хочу загрузить разные CSS-файлы для каждого действия. До сих пор я пытался, я импортировал Html Helper, создал его объект и вызвал его метод CSS. Когда я запускаю его, он не выдает никакой ошибки и не показывает ожидаемый результат. Означает, это не загружает файл CSS динамически на мой взгляд.. Как я могу динамически загружать файлы CSS в разных представлениях из контроллера?
Код:-
<?php
App::import('Helper','Html');
class StudentController extends AppController
{
public function index()
{
// $current_controller = $this->params['controller'];
// echo $current_controller;
//$view=new View(new Controller($current_controller));
//$Html=new HtmlHelper($view);
$Html=new HtmlHelper(new View(null));
//$html=new HtmlHelper(new View());
$Html->css('cake.generics');
//echo ;
//$this->Html->css("cake.generics");
}
public function add()
{
// $current_controller = $this->params['controller'];
// echo $current_controller;
$html=new HtmlHelper(new View(null));
$html->css("mystyle.css");
}
}
3 ответа
Вы также можете создать глобальный файл макета в View > Element, например default_assets.ctp
после этого добавьте этот файл в файл макета по умолчанию, например,default_layout.ctp в View > Layout folder
и после доступа это в вашем контроллере, как
public function index(){
$this->layout = "default_layout";
}
Вы можете сделать это в виде файла, например,
//in your View/Students/add.ctp
$this->Html->css('yourstyle', array('block' => 'yourStyle'));
//in your layout file
echo $this->fetch('yourStyle');
то же самое с файлами JS
// in your view
$this->Html->script('yourjs', array('block' => 'yourJs'));
//in your layout file
echo $this->fetch('yourJs');
Я получил это работать таким образом,
Я добавил переменную "mycss" в контроллер, индекс действия:-
$this->set('mycss','custom');
И получил доступ к этой переменной mycss из файла макета:-
if(isset($mycss)){
$this->Html->css("$mycss");
}
И это сработало.