尝试将变量传递给视图时 Laravel 5.1 错误
Posted
技术标签:
【中文标题】尝试将变量传递给视图时 Laravel 5.1 错误【英文标题】:Laravel 5.1 error when trying to pass variable to view 【发布时间】:2016-03-14 21:48:08 【问题描述】:我有以下 sn-p 代码,我试图将 email
对象传递给我的视图。
return response()->view('admin.editEmail')->with('email', $this->template->findTemplateById($id));
这会导致以下错误:
调用未定义的方法 Illuminate\Http\Response::with()
我该如何解决这个问题?
【问题讨论】:
不需要使用response(),只要使用view('admin.editEmail')->with(...)就可以了 【参考方案1】:有许多不同的方法可以做到这一点。
我更喜欢使用这个,因为您可以轻松添加新变量。 通过这种方式,您的控制器和视图中也可以有不同的变量名称。
return view('admin.editEmail', [
'email' => $adminEmail,
'anotherVar' => $someValue,
]);
在此示例中,控制器中的电子邮件存储在 $adminEmail
中,但在模板中我们将接收它为 $email
。
使用 compact,您需要在控制器中使用与视图中相同的变量名。
【讨论】:
【参考方案2】:只需将其作为view()
中的第二个参数传递:
return response()->view('admin.editEmail', $email);
【讨论】:
@V4n1ll4 如果这对您有帮助,请将此答案标记为正确【参考方案3】:Here are the docs for view->with()。您必须为您发送的每个变量传递一个键和一个值。如果你有多个,你需要发送一个键=>值的数组。 compact
对此很有用。
$template = $this->template->findTemplateById($id)
response()->view('admin.editEmail')->with(compact('email', 'template'));
【讨论】:
以上是关于尝试将变量传递给视图时 Laravel 5.1 错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 5.1 中传递数据控制器以查看获取未定义的变量
在 Laravel 5.1 中通过 AJAX 将用户输入数据从视图传递到控制器
如何将视图中的数组传递给 ajax 并在 Laravel 5 的控制器中访问?