Symfony2 Twig和布尔值false

时间:2016-04-05 08:05:52

标签: php symfony twig

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

感谢您的帮助。 :)

2 个答案:

答案 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>