如何在xml路由文件中提供null默认参数

Mic*_*ick 7 symfony

此代码转储正确$id的类型变量null:

/**
 * Show user
 *
 * @Route("/show/{id}", name="acme_user_show", defaults={"id"=null}, requirements={"id"="\d+"})
 */
public function showUserAction($id = null)
{
    var_dump($id);
}
Run Code Online (Sandbox Code Playgroud)

以下代码给出了一个$id类型的变量string:string(4) "null"

/**
 * Show user
 *
 */
public function showUserAction($id = null)
{
    var_dump($id);
}
Run Code Online (Sandbox Code Playgroud)

routing.xml

<route id="acme_user_show" pattern="/show/{id}">
    <default key="_controller">AcmeUserBundle:User:show</default>
    <default key="id">null</default>
    <requirement key="id">\d+</requirement>
</route>
Run Code Online (Sandbox Code Playgroud)

我会假设2给出类似的结果,这是正常的吗?如何在xml中给出默认的空值?


  • 我访问/showUser路径来测试$id变量是否为null.
  • 我也试过<default key="id" />而不是<default key="id">null</default>=>没有成功

Mar*_*tis 8

只是为了澄清Patt的答案,这是固定的,指定它的正确方法是这样的:

 <default key="threadId" xsi:nil="true" />
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下完整的路由规范将是这样的:

<route id="acme_user_show" pattern="/show/{id}">
    <default key="_controller">AcmeUserBundle:User:show</default>
    <default key="id" xsi:nil="true" />
    <requirement key="id">\d+</requirement>
</route>
Run Code Online (Sandbox Code Playgroud)