我使用的框架(特别是EC-Cube3,如果感兴趣)使用带有TWIG模板的Silex应用程序。
它有一个配置了PHP对象数组的导航侧边栏。我可以注入一个看起来像这样的项目数组:
$item = array(
"id" => "item_id"
"url" => "named_url"
);
网址以典型的Silex方式创建:
$app->match('/item', 'Controller::method')->bind('named_url');
框架最终使用url
字段并在TWIG中对其进行评估,如下所示:
{{ url(item.url) }}
这通常很好!但问题来自于我有一个包含参数的URL,如下所示:
$app->match('/item/{id}', 'Controller::method')->bind('named_url'); // Needs 'id' to be evaluated.
在这种情况下,使用同一个数组设置网址是行不通的,因为TWIG的url
函数需要id
作为第二个参数。
由于我无法更改应用程序的TWIG文件(因为我无法安全地更新应用程序),因此我需要能够设置项目{{1也包括url
。
经过调查,我不认为这是可能的。这是不可能的吗?还是有一些我不知道的方法?
答案 0 :(得分:1)
你可以使用像这样的多种变种
{{ path('path_in_route', {'id': article.id,'slug': article.slug}) }}
和
path_in_route
必须在您的路由器文件中。
希望对你有所帮助。
答案 1 :(得分:0)
您可以在Twig文件中尝试以下操作:
{{ url(item.url,{'id': id}) }}
我认为这应该有效,但不确定。
编辑#2
如果你使用这样的东西怎么办:
$app->match('/item', 'Controller::method($id)')->bind('named_url');
$id
是你需要传入的ID。我对Silex并不是很熟悉,但也许是这样的?