route ('password.reset', $this->token, false) 助手函数 route 的 false 参数是做什么的 ?
2

app/Notifications/ResetPassword.php

     public function toMail($notifiable)
     {
         return (new MailMessage)
             ->subject('重置密码')
             ->line('这是一封密码重置邮件,如果是您本人操作,请点击以下按钮继续:')
             ->action('重置密码', url(route('password.reset', $this->token, false)))
             ->line('如果您并没有执行此操作,您可以选择忽略此邮件。');
     } 

这里面的 route('password.reset', $this->token, false) , 本书中第一回出现生成相对路径的情况(默认为true,生成绝对路径). 不知道这里为什么要生成相对路径, 生成绝对不可以吗? 是不是因为 mail 的缘故, 如下,mail 类的 action 方法里也没见到有说要相对链接什么的


   /**
     * Configure the "call to action" button.
     *
     * @param  string  $text
     * @param  string  $url
     * @return $this
     */
    public function action($text, $url)
    {
        $this->actionText = $text;
        $this->actionUrl = $url;

        return $this;
    }
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 3

你可以试一下 action 方法第二个参数到底能不能使用 相对路径,但 route() 方法可以生成

route('password.reset', 11, true) => "http://larabbs.test/password/reset/11"

不需要再在外面使用 url()

5个月前

route 函数为给定命名路由生成一个URL:

$url = route('routeName');

如果该路由接收参数,你可以将其作为第二个参数传递进来:

$url = route('routeName', ['id' => 1]);

默认情况下,route 函数生成的是绝对 URL,如果你想要生成一个相对 URL,可以传递 false 作为第三个参数:

$url = route('routeName', ['id' => 1], false);
4个月前

的确route('password.reset', $this->token)就已经可以生成正确的url了,不太明白这里为什么要这样写?

框架原生的写法是:
url(config('app.url').route('password.reset', $this->token, false)),不仅增加了一个url,还有一个config('app.url'),假设config('app.url')的值和域名不一样的话,激活邮件中的链接还会出错。而且当推送到线上https环境时,由于线上和本地的.env文件中的app_url并不一致,因此生成的激活链接也是有问题,无法打开的。

我能想到的唯一理由是,url这个方法实际上是Illuminate\Routing\UrlGenerator::to这个方法,此方法在最开始会先检测route方法生成的url是否为有效url,多了一重保障。
file

4个月前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!