Контроллер не имеет запроса на изменение от промежуточного программного обеспечения - PullRequest
1 голос
/ 07 февраля 2020

У меня есть специальное промежуточное программное обеспечение, которое редактирует запросы следующим образом:

public function handle($request, Closure $next)
{
    $profileLocal = ProfileLocal::where(
        'id', JWTHelper::tokenExtractProfileLocalID($request->token)
    )->with('status')->first();

    if (empty($profileLocal) || $profileLocal->status->email_verified == 0 || $profileLocal->status->blocked == 1) {
        return $this->respondError('You dont have access to this store', 336);
    }

    $request->profileLocal = $profileLocal;

    return $next($request);
}

Однако, когда я пытаюсь получить доступ $request->profileLocal В моем контроллере:

public function deviceSet(DeviceRequest $request)
{
    dd($request->profileLocal);
}

Я получаю нулевое возвращаемое значение хотя в моем DeviceRequest, если я пытаюсь dd(request()->profileLocal), он работает нормально? Кто-нибудь знает, что я могу делать здесь не так? Я заметил, что если я использую request()->profileLocal в моем контроллере, он работает как ожидалось

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Если вы хотите добавить добавить значение в запрос и иметь возможность доступа к нему как к свойству, вы можете добавить его к базовому свойству request:

$request->request->add([
    'profileLocal' => $profileLocal
]);

// or $request->request->add(compact('profileLocal'))

Тогда вы сможете чтобы получить доступ к значению в вашем контроллере с помощью:

$request->profileLocal

Это значение также будет включено при вызове таких методов, как all() или input().

1 голос
/ 07 февраля 2020

Мне сказали, что если я использую:

$request->attributes->add(['profileLocal' => $profileLocal]);

В своем промежуточном программном обеспечении и затем получаю к нему доступ с помощью:

$request->attributes->get('profileLocal')

Это работает, я не знаю, правильно ли это хотя.

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