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路由{占位符}默认值的主要内容,如果未能解决你的问题,请参考以下文章