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

Laravel中URL传参并向Blade视图传递数据失败求助

问题解决:Redirect跳转后Blade无法获取传递的数据

一、修正Session数据传递的语法错误

你在redirect()->route()->with()里的写法存在语法问题,with()方法需要接收键值对格式的参数,当前的['email', $result['user']['email']]是索引数组,无法正确将数据存入Session。

错误写法:

return redirect()->route('login', ['error' => 0, 'stepIndex' => 2, 'formType' => 'login', 'email' => $result['user']['email']])->with(['email', $result['user']['email']]);

正确写法二选一:

  1. 分参数传递:
return redirect()->route('login', ['error' => 0, 'stepIndex' => 2, 'formType' => 'login', 'email' => $result['user']['email']])->with('email', $result['user']['email']);
  1. 关联数组传递:
return redirect()->route('login', ['error' => 0, 'stepIndex' => 2, 'formType' => 'login', 'email' => $result['user']['email']])->with(['email' => $result['user']['email']]);

修正后,Blade中的{{ session()->get('email') }}就能正确读取Session里的邮箱数据。

二、获取URL中的参数

你已经在路由参数里传递了email,但Blade直接用$email ?? null无法获取,因为该变量未被传入视图。可以通过两种方式解决:

方式1:Blade中直接从请求获取

{{ request('email') ?? null }}

方式2:在路由对应控制器方法中接收并传入视图

假设login路由对应的控制器方法是showLoginForm,修改该方法:

public function showLoginForm(Request $request)
{
    $email = $request->query('email');
    return view('login', compact('email'));
}

修改后,Blade里的{{ $email ?? null }}就能正常读取URL中的邮箱参数。

三、完整修正后的控制器代码片段

// ... 其他代码保持不变

return redirect()->route('login', ['error' => 0, 'stepIndex' => 2, 'formType' => 'login', 'email' => $result['user']['email']])->with(['email' => $result['user']['email']]);

四、Blade视图兼容两种获取方式

{{ session()->get('email') ?? request('email') ?? null }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:10:15