Как динамически загрузить файл 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");
}

И это сработало.

Другие вопросы по тегам