#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
. Пожалуйста, обратитесь к скриншоту в моем вопросе. Спасибо ~