Как стать автором
Обновить

Комментарии 8

Что-то Вы с кодом в контроллере перегнули палку, все необходимые расширения Twig'a прописываются в settings.yml, почитайте README к плагину. Да и настройки такого рода нужно выносить в PluginConfiguration.

Вообще, по представленному коду сложилось впечатление, что не Symfony не sfTwigPlugin Вам здесь не нужены, т.к. все идет в обход фреймворка и плагина.

На это:
// подгружаем хелперы Symfony
  require_once 'path_to_symfony_project/lib/vendor/symfony/lib/helper/AssetHelper.php';
  require_once 'path_to_symfony_project /lib/vendor/symfony/lib/helper/TagHelper.php';


Если уж совсем никак не обойтись без хелперов в контроллере, то они подгружаются так:
$this->context->getConfiguration->loadHelpers(array('Asset', 'Tag'));
хелперы нужны не в контроллере, а в шаблоне, иначе их негде подгружать, кроме как в контроллере (я имею в виду, что точно не в шаблоне)

Прошу вас указать, что именно сделано в обход фреймворка и плагина? Как сделать правильно?
Если хелперы нужны в щаблоне, то и подгружают их в шаблоне (по крайне мере так сделано в Symfony)
Если отталкиваться от текущего возможностей sfTwigPlugin'a, то достаточно прописать view_class'ы в module.yml (вы это сделали) и указать расширения Twig'a в settings.yml, вот что говорит документация:

An sf_twig_extensions setting has been added to settings.yml that holds an array of Twig_Extension classes. sfTwigView takes all those names and tries to initiate them into Twig_Environment::addExtension(). If it cannot do that, it will throw an InvalidArgumentException.


Городить процессинг шаблона в контроллере нет нужно, да и неправильно, этим занимаются sfTwigView и sfTwigPartialView. Минимальный набор шаблонов получается такой: apps/frontend/templates/layout.html:

...
  <body>
    {{ sf_content }}
  </body>
...



в <module_name>/templates/indexSuccess.html:

<h1>Postss List</h1>
<table class="posts-list">
  <thead>
    <tr>
      <th>Id</th>
      <th>Title</th>
      <th>Text</th>
      <th>Modified</th>
      <th>Comments count</th>
    </tr>
  </thead>
  <tbody>
    {% for posts in postss %}
      <tr>
        <td>{{ posts.id }{</td>
       <td><a href="">{{ posts.title }}</a></td>
       <td>{{ posts.text }}</td>
       <td>{{ posts.modified_ }}</td>
       <td>{{ posts.Comments.count }}</td>
      </tr>
    {% endfor %}
  </tbody>
</table>

блоки и наследование между шаблоном приложения и шаблоном модуля использовать не получится, а вот между шаблонами модуля (в пределах директории templates модуля) — пожалуйста, но «допилить» плагин, думаю, проблемы не составит.
И еще в догонку)

<td>{ posts.text }</td>  -- потенциальная XSS

надо добавить фильтр 'escape':

<td>{ posts.text | escape }</td>
Хорошо, что код контроллера не видели идеологи симфонии, они бы плеваться начали)
Вопрос один — зачем вам этот шаблонизатор вообще?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации