symfony 3.1路由{占位符}默认值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了symfony 3.1路由{占位符}默认值相关的知识,希望对你有一定的参考价值。

我创建了一个带路由的控制器并尝试了一个默认值,即控制器代码:

class luckynumber extends Controller
{
   /**
    * Matches  /lucky/number exactly
    *
    * @Route("/lucky/number", name="lucky_number")
    */
   public  function numberAction()
   {
       $number = rand(1, 100);

       return $this->render('lucky/number.html.twig', array('number' => $number));
   }

   /**
    * Matches /lucky/number/{choised} exactly
    *
    * @Route("/lucky/number/{choised}", name="choised_number", requirements={"choised":"d+"})
    */
   public function undernumberAction(Request $request, $choised = 7) 
   {
       $numberList = array();
       for($i = 0; $i < $choised; $i++) {
           $numberList[] = rand(1,100);
       }

       $final_list = implode('-', $numberList);

       return $this->render('lucky/choised_number.html.twig', array(
           'number' => $choised,
           'list' => $final_list
       ));
   }
}

问题是,当我去http://localhost:8000/lucky/number/它告诉我:没有找到“GET / lucky / number /”的路线这里有什么问题?

答案

您需要在@Route()注释选项中添加默认值,而不是在方法参数中。

@Route("/lucky/number/{choised}", name="choised_number", requirements={"choised":"d+"}, defaults={"choised":7})

有关更多信息,请参阅@Route and @Method文档。

另一答案

我在这周围找到的唯一方法是来自twig文件,它是这样的:

<ul>
<li><a href="/lucky/number">lucky number</a></li>
<li><a href="/lucky/number/7">choised lucky number </a></li>
</ul>
另一答案

您可以添加2个这样的注释:

/**
* @Route("/blog", defaults={"page"=1})
* @Route("/blog/{$page}", name="blog_list", requirements={"page"="|d+"})
*/
public function list($page)
{
    return new Response('<html><body>Welcome to my Blog'.$page.'</body></html>');
}

我正在使用Symfony 3.4

以上是关于symfony 3.1路由{占位符}默认值的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 默认图片占位符

如何在 Laravel 中生成具有占位符/可替换值的路由,以便在运行时在 JS 中使用?

翻译后的占位符值未拉入 Symfony 4 表单字段

将查询保留在搜索栏中,但使用占位符作为初始默认值

布局中的片段占位符

在 user_name 的占位符中获取错误值