Как использовать несколько методов в одном маршруте в Laravel - PullRequest
0 голосов
/ 30 мая 2018

Я хочу использовать более одного метода на одном маршруте с использованием laravel.Я пытаюсь таким образом, но когда я dd (), он показывает строку плана.

Route::get('/user',[
'uses' => 'AppController@user',
'as'   => 'useraccess',
'roles'=> 'HomeController@useroles', 
]);

Когда я опция dd () 'role' , это показывает строку плана, как это.

"roles" => "HomeController@useroles"

мое промежуточное ПО проверяет роль таким образом.

 $actions=$request->route()->getAction();
 $roles=isset($actions['roles'])? $actions['roles'] : null;

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Самый простой способ принять несколько методов HTTP в одном маршруте - это использовать метод match, например:

Route::match(['get', 'post'], '/user', [
    'uses' => 'AppController@user',
    'as'   => 'useraccess',
    'roles'=> 'HomeController@useroles', 
]);

Что касается промежуточного программного обеспечения, для проверки типа HTTP-запроса, tidierпуть будет:

$method = request()->method();

И если вам нужно проверить для конкретного метода:

if (request()->isMethod('post')) {
    // do stuff for post methods
}
0 голосов
/ 31 мая 2018

Вот как вы можете сделать несколько методов на одном маршруте:

Route::get('/route', 'RouteController@index');
Route::post('/route', 'RouteController@create');
Route::put('/route', 'RouteController@update');
/* Would be easier to use
* Route::put('/route/{route}', 'RouteController@update');
* Since Laravel gives you the Model of the primary key you've passed
* in to the route.
*/
Route::delete('/route', 'RouteController@destroy');

Если вы написали свое собственное промежуточное ПО, вы можете заключить маршруты в Route::group и применить ваше промежуточное ПО к этим маршрутам.или отдельные маршруты соответственно.

Route::middleware(['myMiddleware'])->group(function () {
    Route::get('/route', 'RouteController@index');
    Route::post('/route', 'RouteController@create');
    Route::put('/route', 'RouteController@update');
});

Или

Route::group(['middleware' => 'myMiddleware'], function() {
    Route::get('/route', 'RouteController@index');
    Route::post('/route', 'RouteController@create');
    Route::put('/route', 'RouteController@update');
});

В зависимости от того, что вам легче читать.

https://laravel.com/docs/5.6/routing#route-groups

...