使用Silex的app.url_generator.generate将路由参数传递给Twig模板

时间:2015-02-25 15:46:28

标签: php twig silex

我正在使用Silex创建一个快速网站。我试图将路径中的变量传递给动态页面中的视图。

这是我的控制器代码:

$app->get('/clients/view/{refnum}', function (Silex\Application $app, Request $request, $refnum) {
    return $app['twig']->render('client.twig', array('flag'=>0, 'refnum' => $refnum));
})->bind('client_view');

这是我的枝条代码:

{% extends 'layout.html.twig' %}

{% block pagecontent %}

<div class="container-fluid">
    <div class="row">
<h1>Hello, {{ refnum|default('Not Found!')|capitalize }}!</h1>
    </div>
</div>

{% endblock %}

当我在浏览器中直接输入http://foobar/clients/view/123之类的网址时,它可以正常工作。

但是,我正在尝试在我的页面中动态创建链接。

这是一个HTML代码段,展示了我正在做的事情:

<td><a href="{{ app.url_generator.generate('client_view', {'refnum': {{refnum}}  } ) }}">John Smith</a></td>

我收到了Twig异常消息:

  

ExpressionParser.php中的Twig_Error_Syntax第281行:哈希键必须是   带引号的字符串,数字,名称或括起来的表达式   括号(值为“{”的意外标记“标点符号”in   第47行的“clients.home.twig”

我能解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

试试:

<td><a href="{{ app.url_generator.generate('client_view', {'refnum': refnum  } ) }}">John Smith</a></td>