Если мне нужен промежуточный конструктор бэкэнд-контроллера? - PullRequest
1 голос
/ 03 марта 2020

В Laravel 6 Я определил маршруты:

Route::group(['middleware' => 'auth:api', 'prefix' => 'adminarea', 'as' => 'adminarea.'], function ($router) {

    Route::resource('ads', 'Admin\AdController');
    Route::group(['prefix' => 'ads'], function ($router) {
        Route::resource('/{ad_id}/categories', 'Admin\AdCategoriesController');
    });
    ...

и конструктор приложения / Http / Controllers / Admin / AdCategoriesController. php имеет строку:

<?php

namespace App\Http\Controllers\Admin;

use Auth;
...

class AdCategoriesController extends Controller
{
    private $requestData;


    public function __construct()
    {
        $this->middleware('auth:api', ['except' => []]);
        $request           = request();
        $this->requestData = $request->all();
    }

Интересно, действительно ли нужно промежуточное программное обеспечение в вышеупомянутом конструкторе?

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Вы можете использовать Промежуточное программное обеспечение в Маршруты или Контроллер .

Вы можете добавить Middleware только к одной группе маршрутов или более. например:

Route::group([], function ($router) {
    $router->group(['middleware' => ['throttle'] ,'namespace' => '\Laravel\Passport\Http\Controllers'], function ($router) {
        $router->post('login', [
            'as' => 'auth.login',
            'uses' => 'AccessTokenController@issueToken',
        ]);
    });

    $router->post('register', [
        'as' => 'auth.register',
        'uses' => 'AuthController@register',
    ]);
});

Другой синтаксис:

Route::group([], function ($router) {
        $router->group(['namespace' => '\Laravel\Passport\Http\Controllers'], function ($router) {
            $router->post('login', [
                'as' => 'auth.login',
                'middleware' => ['throttle'] ,
                'uses' => 'AccessTokenController@issueToken',
            ]);
        });

        $router->post('register', [
            'as' => 'auth.register',
            'uses' => 'AuthController@register',
        ]);
    });

Другой синтаксис:

Route::get('/url','YourController@yourMethod')->middleware('yourMiddleware');

Или вы можете использовать __ construct в вашем Контроллер .

Но вам не нужно использовать Middleware в Routes и Controller вместе.

Этот документ может вам помочь.

1 голос
/ 03 марта 2020

Как вы знаете, Middleware может быть назначено как Route с, так и Controller с

  • При назначении на Route это повлияет только на Route

  • Когда назначено для aa Route::group, это повлияет на все Route с в этой группе

  • Когда назначено для Controller функция конструктора, она повлияет на все методы (и их соответствующие Route s) в Controller

  • При назначении методу Controller это повлияет на этот метод ( и соответствующие Route с

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...