Symfony Twig Path函数参数,由字符串定义的键

时间:2016-01-26 00:21:03

标签: php symfony twig

在使用Symfony的Twig中,要在模板中生成路径,它想要使用

{{ path('mypathname', {parameterName: parameterValue}) }}

在我的项目中,我有一个继承的模板,一个块循环遍历一大块数据并吐出一个URL列表。我想做的是,从我的新模板,允许我{% set %}第一个参数的键名

所以基本上就像这样

template.html.twig

<ul>
{% for thing in things %}
    <li><a href="{{ path(path_name, {path_param: thing.value}) }}">{{ thing.name }}</a></li>
{% endfor %}
</ul>

otherthings.html.twig

{% extends 'template.html.twig' %}
{% set path_name = "thingDetail" %}
{% set path_param = "id" %}

并查看输出

<ul>
    <li><a href="/things/detail?id=20">The 20th Thing</a></li>
</ul>

这可能听起来很荒谬,但是在这个应用程序中,命名和路径样式并不总是与进入该块循环的不同类型的内容相匹配,因此某些类型的覆盖需要发生,并且最后我现在想要做的事情,是为每种类型覆盖那个块,当需要做的最后一件事是URL生成

谢谢!

1 个答案:

答案 0 :(得分:2)

如果将哈希键括在括号中,Twig会将其视为表达式:

use Cake\Log\Log;

Log::config('default', [
    'engine' => 'Syslog'
]);

会将{%- set field = 'foo' -%} {%- set arr = { (field): 'bar' } -%} 设置为

arr

Twig documentation中提到了这一点,但很容易看出它如何被忽视。)

相关问题