Laravel 重定向回变量无效

Laravel redirect back with variable not working

我正在构建一个 laravel 应用程序,我有这行代码应该将用户重定向回他刚刚提交的表单,其中包含旧的输入和一些操作的结果。

 return back()->with(["result" => round($area, 2)])->withInput($request->all());

问题是我只收到 blade 中的旧输入,$result 变量在视图中不可用。

这是我尝试输出结果的方式:

<input type="text" name="result" value="{{isset($result)&&old('roofType')==0?$result:''}} &#x33a1; " class="form-control input-sm" >

这是提交后视图中的变量:

{{ dd(get_defined_vars()['__data']) }}:

array:7 [▼
         "__env" => Factory {#89 ▶}
         "app" => Application {#3 ▶}
         "errors" => ViewErrorBag {#169 ▶}
         "roofName" => "Acoperis intr-o apa"
         "roofType" => "1"
         "roofFolder" => "A1"
         "baseFields" => array:3 [▼
                                  0 => "L"
                                  1 => "l"
                                  2 => "H"
                                  ]
          ]
return redirect()->back()->with('result',round($area, 2))->withInput($request->all());

打电话 {{Session::get('result')}} 在你的 blade.

问题是我认为写作 return back()->with('bladeVar', $controllerVar)return view('test')->with('bladeVar', $controllerVar); 相同,但不是。

您不能使用 blade 普通语法回显变量:{{ $bladeVar }},相反,您必须访问会话以获取值:{{ session('bladeVar') }}.

在我改变显示数据的方式后,一切都按预期工作。

答案是你不能。

如果您想使用 with(),请将其与 view() 一起使用,例如:

return view('welcome')->with(['name' => 'test']);

您不能将 with()back()redirect() 一起使用。它不会给你任何错误,但你不会在视图上获得变量。

更多信息:https://laravel.com/docs/master/views#passing-data-to-views

return view('profile.reset', compact('user'));