我尝试在Symfony2项目中使用Twig生成URL。我的URL以布尔值作为参数,当我在树枝中放入True时,它是有效的,但当我放入false时,错误就会抛出。
在呈现模板期间引发异常(路由"route_1"的参数"boolean"必须匹配"[^/]++"()给定)。
{{ 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
}
要生成的url:
{{ 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)
感谢您的帮助。:)
这在某种程度上取决于您想要在URL中包含什么。布尔变量通常不是一个好主意,因为URL是一个字符串。
布尔变量表示为true
还是1
?
{{ path('route_1', {'id': item.id, 'boolean': 'false' }) }}
或
{{ path('route_1', {'id': item.id, 'boolean': 1 }) }}
您还应该指定参数的要求,在这种情况下,我可以发送任何内容。
无论如何,您应该始终传递文本表示的变量,如数字类型或文本。
<a href="{{ path('route_1', {'id': item.id, 'boolean': 'false' }) }}">Link</a>