我的路线.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
函数,我找到了原因,laravel生成错误Regular 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 -> '正则表达式路由约束'或路由模型绑定 @ http://laravel.com/docs/routing#route-model-binding
于 2013-09-27T09:26:38.647 回答