Изменение URL маршрута Laravel после функции app () -> handle () - PullRequest
0 голосов
/ 05 июня 2018

У меня есть доступ к 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 Ответ

0 голосов
/ 06 июня 2018

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

Класс UrlGenerator Laravel использует текущий запрос для определения полностью определенного доменаимя при вызове функций, таких как 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().И снова измените по мере необходимости.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...