我做了一個控制器,一個路由,並試圖默認值時,控制器代碼: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 /」的路由 這裏有什麼問題?
'/幸運/ number':這是相匹配的第二路徑(默認值)的有效途徑,但他的第一條路線首先匹配相同的路徑(通過禁用第一條路線來測試它),因此您可以合併這兩個操作來實現它。 – yceruto
我嘗試過,現在當我嘗試獲取** /幸運/數字**時,它使用默認值,但如果我嘗試調用**/lucky/number/**,它會再次給我同樣的錯誤? –
是的,'/ lucky/number /'不是用缺省值工作的有效路徑,通配符要求:在這種情況下,「\ d +」需要斜槓後面的數字「/ ...」,所以沒有匹配。你應該使用'/幸運/號碼',但是這也與第一條路線相匹配,所以你需要改變,因爲勝利第一。 – yceruto