【问题标题】:How can I sent a variable from a controller to a view in Laravel?如何将变量从控制器发送到 Laravel 中的视图?
【发布时间】:2015-05-01 19:44:12
【问题描述】:

我想将变量 $username 的值从我的控制器发送到我的视图。


控制器

我将它发送到我的控制器底部,如下所示:

return Redirect::to('/')
    ->with('error','Username/Password Wrong or account has not been activated !')
    ->withInput(Request::except('password'))
    ->with('username', $username )
    ->withErrors($validator);

注意:$用户名


查看

在我的主页某处,网址为/

我试着打印出来{{ $username or 'Nothing' }}


结果

一直打印Nothing


问题

似乎我的$username 变量从未发送过? 有人可以指出我在这里做错了什么吗?

【问题讨论】:

  • 问题可能是$username 为空或未定义。尝试将$username 更改为"some string" - 我想你会发现它有效。如果确实如此,则意味着您的 $username 变量不包含您认为的内容。
  • 我知道它是空的,我在发送之前已经测试了我的 $username 变量,它包含一些字符串。我只是想知道为什么它从未被发送。
  • 实际上,我刚刚意识到您正在执行重定向,而不是呈现视图。我的答案马上就会出来。

标签: php laravel laravel-4 laravel-5


【解决方案1】:

重定向很重要。来自the documentation on redirects

重定向到新的 URL 和将数据刷新到会话通常是同时完成的。因此,为方便起见,您可以在单个方法链中创建一个 RedirectResponse 实例并将数据闪存到会话:

return redirect('user/login')->with('message', '登录失败');

问题是,重定向是由客户端的浏览器处理的。实际上,服务器以“好的,收到您的请求。现在转到另一个 URL”来响应第一个请求。然后客户端向另一个 URL 发出请求。因此,Laravel 不能只将值传递给下一页进行渲染,因为客户端正在发出新请求。所以with() 子句的作用是将数据写入会话。因此,您需要在渲染新页面时从会话中检索它。

所以你真正想做的是:

重定向:

return Redirect::to("route1")->with("username", $username);

当新页面加载时(可能在不同的路径):

return View::make("template")->with("username", Session::get("username"));

【讨论】:

  • 这正是我所做的:return Redirect::to("route1")->with("username", $username);
  • 是的,但这不是页面呈现的地方。您正在将用户重定向到其他地方。
  • 我将我的用户重定向到网址:/,并在我位于网址时尝试{{ $username or 'Nothing' }}/,这是我的主页。
  • 重点是Redirect::to()->with(...) 正在将数据放入会话中。如果你想在重定向后对这些数据做一些事情,你需要把它从会话中取出。
  • 我该怎么做?你介意把它作为你的答案的一部分吗?
【解决方案2】:

当您发送重定向并将其存储在临时会话中时,您可以查看会话

@if(Session::has('username'))

{!!Session::get('username')!!}
 // if you want to keep username session for next view
{!!Session::keep(['username'])!!}
@else
Nothing
@endif

阅读会话文档http://laravel.com/docs/5.0/session

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 2012-07-11
    • 2019-06-20
    • 1970-01-01
    • 2019-11-13
    • 2021-04-09
    • 2018-01-04
    相关资源
    最近更新 更多