如何从视图的标题部分中的自定义帮助程序加载css / js文件?

时间:2017-05-26 06:40:50

标签: cakephp helpers cakephp-2.9

我正在开发一个自定义助手,我希望每当我使用这个助手时,它应该在该特定视图的标题部分加载相关的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>');

2 个答案:

答案 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>";
    } 
}

另见