Iルーティングとコントローラを作り、デフォルト値、コントローラのコードを試みた:私はhttp://localhost:8000/lucky/number/に行くときの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
));
}
}
に問題がある、それは私に指示します:「GET /幸運/数字/」の経路はありません ここに何が間違っていますか?あなたはいないメソッドの引数には、@Route()
注釈オプションにデフォルト値を追加する必要が
<ul>
<li><a href="/lucky/number">lucky number</a></li>
<li><a href="/lucky/number/7">choised lucky number </a></li>
</ul>
'/ラッキー/ number':それは(デフォルト値を持つ)第2の経路と一致するための有効な方法です最初のルートが最初に同じパス(最初のルートを無効にしてテスト)に一致するため、両方のアクションをマージしてその結果を得ることができます。 – yceruto
私はそれを試しました、今私が** /ラッキー/数字**を取得しようとすると**デフォルト値で動作しますが、**/lucky/number/**を呼び出すと、同じエラーが再び発生しますか? –
はい、 '/ lucky/number /'はデフォルト値で動作するための有効なパスではありません。ワイルドカード要件:この場合 "\ d +"はスラッシュ "/ ..."の後に数字が来るので一致しません。 '/ lucky/number'を使うべきですが、これは最初の一つのルートにもマッチするので、最初に勝ったので変更が必要です。 – yceruto