Пользовательские скрипты и стили для виджетов в Symfony: позиция - PullRequest
1 голос
/ 18 января 2010

Мой образец виджета:

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?

Ответы [ 2 ]

3 голосов
/ 21 января 2010

В шаблоне вы должны использовать

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

Обратите внимание, что это use вместо include.

См. Также этот вопрос и документацию .

В этом случае это лучший подход, чем прямой доступ к объекту ответа.

1 голос
/ 18 января 2010

Попробуйте добавить .css и .js в view.yml вашего модуля вместо шаблона:

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

Это будет проанализировано и добавлено в ваш тег head.

Если у вас есть доступ к ответу текущего контекста, вы можете вызвать addJavascript или addStylesheet в ответе, чтобы вставить их в голову. Из акции:

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

Из шаблона:

$sf_response->addJavascript('script');
...