@want2know

Значение ключа contexts в конфигурации SonataBlockBundle?

SonataAdminBundle требует, чтобы sonata_block был сконфигурирован так:
sonata_block:
    default_contexts: [cms]
    blocks:
        sonata.admin.block.admin_list:
            contexts:  [admin]

Посмотреть конфигурацию проекта sonata-project/sandbox можно здесь.
В аналогичном вопросе на stackoverflow скупо сообщается, что context используется для группировки блоков и можно определить свой...
Вопрос: Контексты cms и admin, sonata_page_bundle где-то специально определены или это просто строки? Как задать свой контекст и надо ли?
  • Вопрос задан
  • 232 просмотра
Пригласить эксперта
Ответы на вопрос 1
prototype_denis
@prototype_denis
Symfony
Соната работает так:

Прилетает роут, по роутеру запускается CRUD контроллёр, затем вызывается пользовательский сервис ExampleAdmin. Контроллер отдаёт данные после сервиса во вьюху, а далее простейшая магия.

foreach ($this->getBlocksByContext($context) as $block) {
     $data[$block->getName()] = $block->render();
}

return $this->render($template, $data);


Во вьюхе просто вывод в цикле

{% for item in items %}
     {{ item | raw }}
{% endfor %}


Вот и всё.

ЗЫ. Разумеется код в сонате другой, но принцип этот.

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

"cms" и "admin" в сонате просто стандартны, она использует их.
Именно по этому блок sonata.admin.block.admin_list мы увидим только в админке, а не на странице нашего сайта.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы