Как загрузить файлы 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>";
}
}
Смотрите также