【问题标题】:Laravel route query get email address from query value instead of keyLaravel 路由查询从查询​​值而不是键获取电子邮件地址
【发布时间】:2021-05-22 00:56:48
【问题描述】:

我遇到了关于 Laravel 8 路由的问题。 而且我无法找到解决此问题的方法。

例如,我在 Laravel 中有这样的路由格式:

$domain/password_reset?$email

它看起来像这样:

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

我知道查询参数具有?key=value 格式。但是在我的情况下,提供的路由格式是预期的(由客户端)。不是传统的键=值方式。此外,从电子邮件中单击 url 链接。其中电子邮件中的链接使用给定的确切路由格式(不是 url 编码的)。

在控制器中获取的示例请求查询如下:

如果您注意到,电子邮件变成了密钥(这是意料之中的)。并且由于是密钥,. 已更改为_。而不是gmail.com,它变成了gmail_com

是否有更好的解决方案以这种路由格式从 url(非 url 编码)获取确切的电子邮件地址?希望有人可以帮助我。非常感谢您!

【问题讨论】:

    标签: laravel url routes


    【解决方案1】:

    你应该得到请求查询并自己解析它:

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

    在上面的示例中,$query 应该包含 URL 上 ? 之后的所有内容。

    或者你可以只获取你已经拥有的数组的键:

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

    【讨论】:

    • 感谢您的回答!我尝试使用与您相同的解决方案,在我的情况下,我尝试了$email = array_key_first($requestData);,它按预期收到了电子邮件。但是,问题是电子邮件已更改。由于是数组键,. 已更改为_。而不是gmail.com,它变成了gmail_com。请参考我的问题中的屏幕截图。谢谢~
    猜你喜欢
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多