Symfony: напиши контент в голову - PullRequest
0 голосов
/ 09 февраля 2010

Есть ли достаточно элегантный способ записи простого блока JS в заголовок макета Symfony?

У меня есть модуль Page, чей шаблон showSuccess знает, сколько виджетов он должен отображать. Мне нужно сообщить этот номер внешнему файлу JS, включенному через use_javascript(). Единственный способ, которым я знаю, сделать это с любой простотой - это установить глобальную переменную JS в отображаемом контенте, который может быть прочитан внешним исходным файлом.

Я использовал ту же технику для других значений пути, которые известны макету, но в этом случае только сама страница знает это значение. Я не могу найти способ написать простую строчку JS в голову. Я пробовал это:

<?php echo javascript_tag(); ?>
  var c_widgets = <?php echo count( $widgets ); ?>
<?php echo end_javascript_tag(); ?>

К сожалению, он пишет непосредственно в содержимое страницы, и я бы хотел этого не делать. Я могу сделать это довольно легко с CakePHP и Rails, но мне не удалось найти аналогичное решение для Symfony.

UPDATE

В соответствии с ответом TheGrandWazoo, приведенным ниже, вот что я наконец-то сделал:

# showSuccess.php
<?php use_helper( 'JavascriptBase' ) ?>

<?php slot( 'scripts_for_head' ) ?>
  <?php echo javascript_tag(); ?>
    var c_widgets = <?php echo count( $widgets ); ?>
  <?php echo end_javascript_tag(); ?>
<?php end_slot(); ?>

# layout.php
<?php include_slot( 'scripts_for_head' ); ?>

Пока все работает прекрасно.

1 Ответ

1 голос
/ 09 февраля 2010

Использование слота в вашем шаблоне, которое вы можете заполнить из своего действия / компонента тегом javascript, - единственное решение, которое приходит на ум в данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...