在同一路由中使用多个控制器会导致路由未定义

时间:2018-11-05 23:18:32

标签: laravel laravel-5 laravel-5.1

在同一路由中使用多个控制器时,出现未定义路由的错误:

这是我的控制器的代码:

public function triealphabet(){
    $list_grocery = miscellaneous::all();
    $list_grocery = $list_grocery->sortBy('name');
    return view('markets.miscellaneous')->with('list_grocery',$list_grocery);}
public function triecreation(){
    $list_grocery = miscellaneous::all();
    $list_grocery = $list_grocery->sortBy('created_at');
    return view('markets.miscellaneous')->with('list_grocery',$list_grocery);}

这是我的路线代码:

Route::get('/miscellaneous','groceryController@listGrocery')->name('groceriesmarket'); 
Route::get('/miscellaneous','groceryController@triealphabet')->name('triealphabet');
Route::get('/miscellaneous','groceryController@triecreation')->name('triecreation');

P.S:如果我使用其他路由路径(例如“ / miscellanous-tri-alphabet”),则不会收到其他任何错误,但除此之外,还会收到未定义路由的错误

2 个答案:

答案 0 :(得分:0)

您可以在此处检查:Laravel 5.2 assigning same route to different controller action by conditions。这不是我的,而是他的一种创造新路线和特质的方法。

答案 1 :(得分:0)

您的3条路线具有相同的http方法和uri,因此只有最后一条路线保留在路线集合中。所以之前的2条路线是不确定的。您可以在课堂上查看详细信息: Illuminate\Routing\RouteCollection.php第65行

/**
 * Add the given route to the arrays of routes.
 *
 * @param  \Illuminate\Routing\Route  $route
 * @return void
 */
protected function addToCollections($route)
{
    $domainAndUri = $route->getDomain().$route->uri();

    foreach ($route->methods() as $method) {
        $this->routes[$method][$domainAndUri] = $route;
    }

    $this->allRoutes[$method.$domainAndUri] = $route;
}