私のroutes.php
Route::get('course/{id}', 'CourseController@show'); Route::get('course/{id}/{comment_type}', 'CourseController@show'); Route::get('course/search/{key_word}', 'CourseController@search');
私の CourseController.php にはこれらのメソッドがあります
public function show($id,$comment_type=1) { //do something } public function search($key_word) { //do something }
search
メソッドに入りたいと思います。しかし、私が呼び出すたびにcourse/search/{key_word} //search method in CourseCOntroller
入ります
course/{id}/{comment_type} //show method in CourseCOntroller
ソースコードをデバッグします。そして、 に関数
UrlMatcher
があるmatchCollection
ことがわかり、その理由がわかりました。 laravelRegular Expression
を呼び出すと、間違っcourse/search/{key_word}
た正規表現が生成されます。#^/course/(?P<id>[^/]++)/(?P<comment_type>[^/]++)$#s
この正規表現がどのように生成されるかわかりません。
search
を呼び出すときにメソッドが 呼び出されるという問題を解決するにはどうすればよいですかcourse/search/{key_word}
。
質問する
369 次
1 に答える
2
ルートの順序を変更します。
<?php
Route::get('course/search/{key_word}', 'CourseController@search');
Route::get('course/{id}/{comment_type}', 'CourseController@show');
Route::get('course/{id}', 'CourseController@show');
{id} はワイルドカードであるため、すべてのルートが選択されます。
http://laravel.com/docs/routing#route-parameters -> 'Regular Expression Route Constraints' または Route model binding @ http://laravel.com/docs/routing#route-model-bindingを参照してください。
于 2013-09-27T09:26:38.647 に答える