将两个参数作为一个传递给TWIG网址

时间:2017-02-17 04:23:27

标签: php symfony twig silex

我使用的框架(特别是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

经过调查,我不认为这是可能的。这是不可能的吗?还是有一些我不知道的方法?

2 个答案:

答案 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并不是很熟悉,但也许是这样的?