Как загрузить файлы CSS / JS из пользовательского помощника в разделе заголовка представления?

Я разрабатываю собственный помощник, и я хочу, чтобы всякий раз, когда я использую этот помощник, он загружал связанные css/js файлы в разделе заголовка этого конкретного представления.

Например, если я использую "XyzHelper" в представлении "abc", XyzHelper должен загрузить файлы css/js в раздел заголовка представления abc и так далее.

Вот мой вспомогательный код:-

App::uses('AppHelper', 'View/Helper');
class XyzHelper extends AppHelper {
    public function show() {
        $html = new HtmlHelper(new View());
        echo $html->css('custom',array('inline'=>true));
        echo $html->script('custom.min',array('inline'=>true));                
        return "<div style='background-color:rgb(200,0,0);padding:20px;color:white;'>Hello World</div>";
    }
}

Выше код загружает файлы CSS / JS, но не в разделе заголовка любого представления.

Я пытался добавить метод ('css') внутри моего помощника, но это также, похоже, не работает. Он говорит, что "добавить" не существует.

$this->append('css','<link_to_css_file>');

2 ответа

Попробуйте изменить параметр inline на false. Как указано в документации:

Если ключ 'inline' установлен в false в параметре $options, теги ссылки добавляются в блок css, который вы можете распечатать внутри тега head документа.

Вы можете сделать это с помощью вспомогательного обратного вызова:

App::uses('AppHelper', 'View/Helper');

class XyzHelper extends AppHelper {

    public $helpers = array('Html');

    public function beforeRenderFile($viewFile)
    {
        echo $this->Html->css('custom', array('inline'=>true));
        echo $this->Html->script('custom.min', array('inline'=>true));                
        echo "<div style='background-color:rgb(200,0,0);padding:20px;color:white;'>Hello World</div>";
    } 
}

Смотрите также

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