Вы можете сделать это любым количеством способов
скажем, в вашем методе действия вы добавляете переменную шаблона следующим образом:
$this->jsVar = 'foo';
Затем в ваших файлах шаблонов
echo javascript_tag( 'var name="' . $jsVar . '";' );
или
<script type="text/javascript">
var name='<?php echo $jsVar; ?>';
</script>
EDIT
Хорошо, исходя из ваших конкретных потребностей, вам нужно будет сделать несколько вещей. Сначала посмотрите на шаблон вашей страницы (тот, который находится в apps/app-name/templates
- вы должны увидеть строку, похожую на эту
<?php include_javascripts(); ?>
Это функция, которая берет все ресурсы javascript, определенные в view.yml
файлах или включенные помощником use_javascript()
, и печатает их на странице.
Итак, наша цель состоит в том, чтобы поместить блок javascript перед , куда включены все остальные скрипты (и под фронтом я имею в виду появление первым в порядке исходного кода)
Чтобы решить эту проблему более гибко, давайте используем слот. Измените вышеприведенную строку в шаблоне своей страницы, чтобы она выглядела так
<?php
if ( has_slot( 'global_js_setup' ) )
{
include_slot( 'global_js_setup' );
}
include_javascripts();
?>
Тогда в вашем методе действия
sfLoader::loadHelpers( 'Asset' );
$this->getResponse()->setSlot(
'global_js_setup',
, javascript_tag( 'var name="value";' );
);
Вы можете расширить эту идею, используя слоты для компонентов, если хотите.