Symfony2 Twig和布尔值false


Symfony2 Twig and boolean false

我尝试在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>