1
要渲染base.twig視圖我所說的render()
函數傳遞給它相應的動作的url內TOC(類樹):解析當前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中提取當前類別的ID。這是通過設置前面所述current_uri全球:
$app->before(function(Request $request) use ($app) {
$app['twig']->addGlobal('current_uri', $request->getRequestUri());
});
訪問局部視圖內的路徑信息(global.request.attributes.get('_route')
)示出了對應子請求路由名稱而不是實際的請求路由名稱(主機請求) 。
有沒有辦法避免手動解析當前uri,並獲得局部視圖內的當前請求路由參數?
爲什麼不在'render'函數中傳遞category_id? 'base.twig'將始終是最上面的請求。 – keyboardSmasher
@keyboardSmasher非常感謝你,我想我明白你的意思! – lexeme