Изменение маршрута маршрута Laravel после функции app () - > handle ()

SpaceDogCS спросил: 12 мая 2018 в 03:51 в: php

Я получаю доступ к api в своем собственном проекте, но теперь у меня возникла проблема с функцией route, после отправки запроса с помощью app()->handle($req) функция маршрута генерирует другую url

   $req = Request::create('/api/auth/login', 'POST', [
        "user" => $request->user,
        "password" => $request->password,
    ]);    $redirect = route('home'); // http://127.0.0.1:8000/home    $res = app()->handle($req);    $redirect = route('home'); // http://localhost/home

Что я пропустил?

1 ответ

Есть решение
Aken Roberts ответил: 12 мая 2018 в 08:16

Request::create() - это метод, унаследованный от класса HTTP-запроса Symfony. При вызове, если вы не передадите какие-либо детали $_SERVER, он будет использовать разумные значения по умолчанию.

Класс Laravel UrlGenerator использует текущий запрос для полного определения -qualified domain name при вызове таких функций, как route(). Поскольку вы не сообщили запросу, что такое текущий домен, он возвращается к localhost.

Если вы находитесь в среде, где $_SERVER заполняется правильную информацию, вы можете передать ее надлежащему параметру:

Request::create(
    '/api/auth/login',
    'POST',
    [
        'user' => $request->user,
        'password' => $request->password,
    ],
    [], // cookies
    [], // files
    $_SERVER
);

Другие возможные решения, которые могут хорошо соответствовать:

  • Используйте Request::createFromGlobals(), чтобы заполнить запрос суперглобальными файлами PHP, такими как $_POST, $_SERVER и т. д., а затем изменить части, которые вы хотите изменить.
  • Если $request уже содержит экземпляр запроса Laravel, вы можете вызвать $request->duplicate(). И снова, при необходимости измените.
SpaceDogCS ответил: 13 мая 2018 в 09:41
Отлично! спасибо