2017-05-26 34 views
0

我正在开发一个自定义助手,我希望每当我使用这个助手时,它应该在该特定视图的标题部分中加载相关的css/js文件..例如,如果我使用“XyzHelper”在“abc”视图中,XyzHelper应该在abc视图的标题部分加载css/js文件,等等。如何从头部视图中的自定义帮助器加载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文件,但在任何视图的标题部分。

我已经试过在我的帮手里追加('css')方法,但那也似乎没有工作。它说'追加'不存在。

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

你应该载入'HtmlHelper'里面你助手使用'public $ helpe rs = array('Html');'。然后你可以像'$ this-> Html-> css('custom',array('inline'=> true));'在你的helper方法中使用它。另外,你的帮助函数不应该回显内容,只返回! – drmonkeyninja

回答

0

尝试更改选项直列。正如文档中所述:

如果在$ options参数中将'inline'设置为false,链接标签将添加到css块,您可以在该文档的head标签内打印该css块。

+0

我已经尝试过,但现在不打印链接标记...虽然这个问题只与自定义助手。 –

0

你可以使用辅助回调就做:

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

参见

相关问题