我在视图game.blade.php中有这些链接:
<a href="{{ URL::route('checkFirstName', $item->PK_item_id) }}"></a>
<a href="{{ URL::route('checkSecondName', $item->PK_item_id) }}"></a>
这些路由在mu routes.php文件中:
Route::get('/game/{itemId}', array('as' => 'checkFirstName', 'uses' => 'GameController@checkFirstName'));
Route::get('/game/{itemId}', array('as' => 'checkSecondName', 'uses' => 'GameController@checkSecondName'));
和我的GameController.php中的这些方法:
public function checkFirstName($itemId)
{
dd('check first name from ' . $itemId);
}
public function checkSecondName($itemId)
{
dd('check second name from ' . $itemId);
}
问题:
两个链接都转到checkSecondName()函数。
答案 0 :(得分:1)
您的路由设计是错误的 - 您的路由都匹配相同的路径,因此这里发生的是第二个路由覆盖第一个路径。尝试使用不同的路径,或者如果两个控制器都提供相同的功能,则可能只使用一个控制器。 您不能拥有两条匹配相同路径的不同路线。
答案 1 :(得分:1)
事情是,你打电话给...
URL::route('checkSecondName', $item->PK_item_id)
...或
URL::route('checkFirstName', $item->PK_item_id)
... Laravel将生成相同的网址路径,即 - /game/{itemId}
。为方便起见,存在命名路由。最后,重要的是路径声明中指定的路径。
所以,会发生什么是Laravel检查路径以找到匹配的路线,但在你的情况下,有两个匹配。最后一个是按设计选择的。
这应该告诉你的是非常简单的:你不能有相同的路由调用不同的控制器方法。 可以的不同之处在于使用的动词:Route::get('/game/{itemId}')
与Route::post('/game/{itemId}')
不同,但这只是一个旁注。
这里可以做的是例如有一个额外的参数来确定要完成的行动类型:
<强>路线强>
Route::get('/game/{itemId}/{type}', array('as' => 'checkName', 'uses' => 'GameController@checkName'));
<强> HTML 强>
<a href="{{ URL::route('checktName', ['itemId' => $item->PK_item_id, 'type' => 'first']) }}"></a>
<a href="{{ URL::route('checktName', ['itemId' => $item->PK_item_id, 'type' => 'last']) }}"></a>
<强>控制器强>
public function checkName($itemId, $type)
{
if ($type === 'first') {
// first name handling
} else {
// last name handling
}
}
答案 2 :(得分:0)
Lessugar的答案是正确的。我还找到了另一个解决方案,所以我想我也应该在这里添加它。
将路线更改为:
var sources = gulp.src(["!./client/bower_components/**/*"
"./client/**/*.js", "./client/**/*.css"], {read: false});