我的示例小部件:
class myWidget extends sfWidgetFormTextarea{
public function getJavascripts(){
return array('my_widget.js');
}
public function getStylesheets(){
return array('my_widget.css');
}
}
表单模板:
<?php include_javascripts_for_form($form) ?>
<?php include_stylesheets_for_form($form) ?>
<?php echo $form;?>
问题是这两个函数在呈现表单之前就生成了link
和script
标记。
如何将它们移至head
部分?
答案 0 :(得分:3)
在模板中,您应该使用
<?php use_javascripts_for_form($form) ?>
<?php use_stylesheets_for_form($form) ?>
请注意,它是 use
而不是include
。
另请参阅this question和documentation。
在这种情况下,直接访问响应对象是一种更好的方法。
答案 1 :(得分:1)
尝试将.css和.js添加到模块的view.yml而不是模板中:
formSuccess:
stylesheets: [my_widget]
javascripts: [my_widget]
将解析并转储到您的头标签中。
如果您可以访问当前上下文的响应,则可以在响应中调用addJavascript或addStylesheet以将其注入头部。从行动:
$this->getContext()->getResponse()->addStylesheet('style');
从模板:
$sf_response->addJavascript('script');