我尝试在Symfony2项目中使用Twig生成URL。 我的URL将布尔值作为参数,当我将Tw中的True设置为工作时,但是当我输入false时,会抛出错误。
在渲染模板期间抛出了异常 (“参数”布尔“用于路由”route_1“必须匹配”[^ /] ++“(”“ 给出)。
{{ path('route_1', {'id': item.id, 'boolean': false }) }}
我对此参数没有任何要求。
/**
* @Route("route1-{id}/boolean{boolean}", requirements={"id" = "\d+"}, name="route_1")
*/
public function Route1Action($id, $boolean, Request $request) {
//Some stuff
}
修改
因此,在URL中使用布尔值是不好的。我把数字和PHP自动转换为布尔值。 0为假,所有其他数字均为真。
<?php
var_dump((bool) ""); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
?>
http://php.net/manual/en/language.types.boolean.php
使用此代码可以正常工作:
行动:
/**
* @Route("route1-{id}/boolean{boolean}", requirements={"id" = "\d+", "boolean" = "\d+"}, name="route_1")
*/
public function Route1Action($id, $boolean, Request $request) {
//Some stuff
}
要生成的网址:
{{ path('route_1', {'id': item.id, 'boolean': 0 }) }} //To send false
{{ path('route_1', {'id': item.id, 'boolean': 1 }) }} //To send true (1 or any other numbers)
感谢您的帮助。 :)
答案 0 :(得分:2)
这取决于您希望在URL中确切拥有的内容。布尔变量通常不是一个好主意,因为URL是一个字符串。
布尔变量是表示为true
还是1
?
{{ path('route_1', {'id': item.id, 'boolean': 'false' }) }}
或
{{ path('route_1', {'id': item.id, 'boolean': 1 }) }}
您还应该指定参数的要求,在这种情况下我可以发送任何内容。
无论如何,您应该始终传递文本可表示的变量,如数字类型或文本。
答案 1 :(得分:1)
<a href="{{ path('route_1', {'id': item.id, 'boolean': 'false' }) }}">Link</a>