簡體   English   中英

Laravel 5.1將中間件添加到資源路由

[英]Laravel 5.1 adding middleware to resource route

因此我一直在嘗試將中間件與我的路由資源一起使用,但使它無法正常工作。

這是我的路線設置:

Route::group(['prefix' => 'api','middleware' => 'locationRouteValidator'], function()
{
    Route::resource('location', 'LocationController');
});

和路由似乎已正確設置:

 php artisan route:list +--------+----------+------------------------------+----------------------+-------------------------------------------------+------------------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+------------------------------+----------------------+-------------------------------------------------+------------------------+ | | GET|HEAD | / | | Closure | | | | GET|HEAD | api/location | api.location.index | App\\Http\\Controllers\\LocationController@index | locationRouteValidator | | | POST | api/location | api.location.store | App\\Http\\Controllers\\LocationController@store | locationRouteValidator | | | GET|HEAD | api/location/create | api.location.create | App\\Http\\Controllers\\LocationController@create | locationRouteValidator | | | DELETE | api/location/{location} | api.location.destroy | App\\Http\\Controllers\\LocationController@destroy | locationRouteValidator | | | PATCH | api/location/{location} | | App\\Http\\Controllers\\LocationController@update | locationRouteValidator | | | GET|HEAD | api/location/{location} | api.location.show | App\\Http\\Controllers\\LocationController@show | locationRouteValidator | | | PUT | api/location/{location} | api.location.update | App\\Http\\Controllers\\LocationController@update | locationRouteValidator | | | GET|HEAD | api/location/{location}/edit | api.location.edit | App\\Http\\Controllers\\LocationController@edit | locationRouteValidator | +--------+----------+------------------------------+----------------------+-------------------------------------------------+------------------------+ 

所以現在我創建中間件:

php artisan make:middleware locationRouteValidator

並保留默認代碼:

public function handle($request, Closure $next)
{
    return $next($request);
}

只是為了測試,在控制器的show方法中,我像這樣回顯了傳遞的id:

public function show($id)
{
    //
    echo "show ".$id;
}

所以現在我希望當我訪問/public/api/location/abcd它應該顯示: show abcd或當我訪問/public/api/location/1234它應該顯示show 1234之后我打算將中間件修改為僅允許要傳遞到{location}數值。

但是,如果我僅使用默認的中間件代碼運行,則頁面將返回白色,而不顯示任何內容。 我從路由中刪除了中間件,它按預期顯示了文本。

我知道我可以將中間件附加到控制器,但是我想到了將其附加到路由中,以便可以使用路由的組功能編寫和應用一些通用中間件,對吧?

你們覺得我哪里錯了? 在此先感謝您的關注!

檢查您的\\ app \\ http \\ kernel.php文件,以查看是否已將中間件注冊為路由中間件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM