Symfony中小部件的自定义脚本和样式:位置

时间:2010-01-18 06:49:40

标签: javascript css symfony1 widget

我的示例小部件:

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;?>

问题是这两个函数在呈现表单之前就生成了linkscript标记。 如何将它们移至head部分?

2 个答案:

答案 0 :(得分:3)

在模板中,您应该使用

<?php use_javascripts_for_form($form) ?>
<?php use_stylesheets_for_form($form) ?>

请注意,它是 use 而不是include

另请参阅this questiondocumentation

在这种情况下,直接访问响应对象是一种更好的方法。

答案 1 :(得分:1)

尝试将.css和.js添加到模块的view.yml而不是模板中:

formSuccess:
  stylesheets: [my_widget]
  javascripts: [my_widget]

将解析并转储到您的头标签中。

如果您可以访问当前上下文的响应,则可以在响应中调用addJavascript或addStylesheet以将其注入头部。从行动:

$this->getContext()->getResponse()->addStylesheet('style');

从模板:

$sf_response->addJavascript('script');