Оказывать TOC (категории деревьев) внутри base.twig зрения я называю функцию render()
передав ей соответствующий URL действия:Анализ текущего uri для получения текущих параметров маршрута внутри частичного. Как избежать?
{% block sidebar %}
{{ render(url('toc_documents_categories')) }}
{% endblock %}
согласующего частичный вид на '/toc/documents'
действия (_toc.documents_categories. прут) определяется следующим образом:
{% set category_id = (current_uri|split('/'))[4] %}
{% macro recursiveCategory(category, active_category_id) %}
<li>
{% if category.children|length %}
<a><span class="icon icon-plus"></span>{{ category.name_displayed }}</a>
{% else %}
{% set active_class = active_category_id == category.id ? 'active' %}
{% set url = app.url_generator.generate('documents_by_category', {category_id: category.id}) %}
<a href="{{ url }}" class="{{ active_class }}">
{{ category.name_displayed }}
</a>
{% endif %}
{% if category.children|length %}
<ul>
{% for child in category.children %}
{{ _self.recursiveCategory(child, active_category_id) }}
{% endfor %}
</ul>
{% endif %}
</li>
{% endmacro %}
{% if categories %}
<div id="categories">
<ul>
{% for category in categories %}
{{ _self.recursiveCategory(category, category_id) }}
{% endfor %}
</ul>
</div>
{% endif %}
Как вы можете видеть, я извлекая идентификатор текущей категории путем разбора текущего URL. Этому предшествует путем установки current_uri глобальные:
$app->before(function(Request $request) use ($app) {
$app['twig']->addGlobal('current_uri', $request->getRequestUri());
});
Доступ к информации о маршруте (global.request.attributes.get('_route')
) внутри частичного вида показывает соответствующий подзапрос название маршрута, а не фактическое имя запрос маршрута (мастера запрос) ,
Есть ли способ избежать ручного анализа текущего uri и получения текущих параметров маршрута запроса в частичном представлении?
Почему бы не передать category_id в функции 'render'? 'base.twig' всегда будет самым верхним запросом. – keyboardSmasher
@keyboardSmasher Большое спасибо, я думаю, я понял, что вы имели в виду! – lexeme