You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blade模板字符串中Config::get请求未传正确值,URL生成异常求助

解决Blade模板中密码重置URL生成错误的问题

你这段代码的核心问题是把Blade模板语法和原生PHP的字符串拼接逻辑搞混了,导致生成的URL包含了多余的代码片段。咱们一步步来修复:

错误原因分析

你原来的代码里,在{{ url(" . Config::get(custom.url) . ")}}中使用了.来拼接字符串——这是原生PHP里拼接字符串的写法,但Blade的{{ }}标签内部是直接解析PHP表达式的,不需要这种拼接方式。再加上Config::get()的参数没加引号,最终导致Blade错误地把这些拼接符号和未解析的配置项代码当成了URL的一部分,生成了奇怪的地址。

修复方案

方案一:直接修正url()函数的用法

把代码改成下面这样,在url()函数内部正确拼接基础URL、重置路径和token,同时给配置项参数加上引号:

<tr>
    <td>Please <a href="{{ url(Config::get('custom.url') . '/password/' . $token) }}">Click here</a> to reset your password:</td>
</tr>

这里的关键点:

  • Config::get('custom.url')必须给配置项名称加单引号/双引号,否则PHP会把custom.url当成常量解析
  • 在url()函数内部用.拼接各个部分,Blade会直接解析整个表达式生成正确的URL

方案二:推荐用命名路由生成URL(更优雅)

如果你的Laravel项目里给密码重置路由设置了名称(比如在routes/web.php里定义了Route::get('/password/{token}', ...)->name('password.reset')),那用route()函数生成URL会更稳妥,不需要手动拼接:

<tr>
    <td>Please <a href="{{ route('password.reset', ['token' => $token]) }}">Click here</a> to reset your password:</td>
</tr>

这种方式的好处是,后续如果修改域名或者路由路径,不需要手动修改模板里的URL,Laravel会自动根据路由名称和参数生成正确地址,减少维护成本。

内容的提问来源于stack exchange,提问作者Viru45

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:12:56