Запрос маршрута Laravel получает адрес электронной почты из значения запроса вместо ключа

#laravel #url #routes

#laravel #url #маршруты

Вопрос:

Я столкнулся с проблемой, касающейся маршрутов Laravel 8. И я не могу найти решение этой проблемы.

Например, у меня есть этот формат маршрута в Laravel:

 $domain/password_reset?$email
 

Где это будет выглядеть так:

 http://test-website.com/password_reset?test@gmail.com
 

Я знаю, что параметры запроса имеют ?key=value формат. Однако в моем случае предоставленный формат маршрута соответствует ожидаемому (клиентом). Не обычный способ key = value. Кроме того, URL-ссылка выбирается из сообщения электронной почты. При этом ссылка в электронном письме использует точный заданный формат маршрута (не в кодировке url).

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

Если вы заметили, электронное письмо стало ключом (что и ожидалось). И поскольку это ключ, . он был изменен на _ . Вместо gmail.com этого стало gmail_com .

Было бы лучшее решение для получения точного адреса электронной почты из URL (не в кодировке url) в этом формате маршрута? Надеюсь, кто-нибудь сможет мне в этом помочь. Большое вам спасибо в advanced!

Ответ №1:

Вы должны получить запрос запроса и проанализировать его самостоятельно:

 [$path, $query] = explode('?',$request->fullUrl())
 

В приведенном выше примере $query должно содержаться все после ? URL.

Альтернативно, вы можете просто получить ключ массива, который у вас уже есть:

 $email = array_keys($request->all())[0]
 

Комментарии:

1. спасибо за ваш ответ! Я попытался использовать то же решение, что и ваше, которое в моем случае я попробовал $email = array_key_first($requestData); , и оно получило электронное письмо, как и ожидалось. Однако проблема в том, что адрес электронной почты был изменен. Поскольку это ключ массива, . он был изменен на _ . Вместо gmail.com этого стало gmail_com . Пожалуйста, обратитесь к скриншоту в моем вопросе. Спасибо ~