我正在开发一个自定义助手,我希望每当我使用这个助手时,它应该在该特定视图的标题部分加载相关的css / js文件。
例如,如果我在“abc”视图中使用“XyzHelper”,XyzHelper应该在abc视图的header部分加载css / js文件,依此类推。
这是我的帮助代码: -
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文件,但不在任何视图的标题部分。
我在帮助器中尝试了append('css')方法,但这似乎也没有用。它说'追加'不存在。
$this->append('css','<link_to_css_file>');
答案 0 :(得分:0)
尝试将内联选项更改为 false 。正如文档中所述:
如果$ options参数中的'inline'键设置为false,则链接标记会添加到css块中,您可以在文档的head标记内打印。
答案 1 :(得分:0)
你可以使用Helper Callback来做到这一点:
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>";
}
}
另见