2010-01-18 41 views
1

我的示例小部件:自定義腳本和樣式在Symfony的部件:位置

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

的問題是,那些2個功能正確渲染形式之前產生linkscript標籤。 我如何將它們移動到head部分?

回答

1

嘗試在模板中添加的.css和.js文件到您的模塊的view.yml代替:

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

,將得到解析並傾入你的頭標記。

如果您有權訪問當前上下文的響應,您可以在響應中調用addJavascript或addStylesheet將它們注入頭部。從動作:

​​

從模板:

$sf_response->addJavascript('script'); 
+0

謝謝,Cryo,但我想讓小部件更加可重用,而不用觸摸任何在 – Darmen

+1

Gotcha中使用的任何view.yml文件。您可以將include_javascripts _...和include_stylesheets _...函數放入插槽中,然後在您的佈局中使用該插槽。如果您有權訪問當前上下文的響應,則可以在響應中調用addJavascript或addStylesheet將它們注入頭部。 – nortron

+0

耶,這就是我需要的,再次感謝! – Darmen

3

在模板中,你應該使用

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

需要注意的是use,而不是include。請參閱this questiondocumentation

在這種情況下,直接訪問響應對象是一種更好的方法。

+0

這實際上是正確的答案,問題是_如何將它們移動到頭部?_和那個標準的解決方案(即使這個幫助器調用'$ context-> getResponse() - > addStylesheet('style') ;'。 – Damien