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

问题描述 投票:1回答:3

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

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 /”的路线这里有什么问题?

symfony routing
3个回答
1
投票

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

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

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


0
投票

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

<ul>
<li><a href="/lucky/number">lucky number</a></li>
<li><a href="/lucky/number/7">choised lucky number </a></li>
</ul>

0
投票

您可以添加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

© www.soinside.com 2019 - 2024. All rights reserved.