<h1>Edit page of {{ $user->username }}</h1>
{{ Form::open(['route' => 'user.store']) }}
... the rest of the view
这是我的login
视图。控制器中store
方法中的相关代码如下所示:
if (Auth::attempt(Input::only('username', 'password'))) {
$user = Auth::user();
return Redirect::route('user.show', ['user' => $user]);
}
和show
方法:
public function show($user)
{
return View::make('user.edit', ['user' => $user]);
}
我得到.../user/%7Buser%7D
作为网址(我希望它是,例如。.../user/exampleusername
),也是例外:ErrorException: Trying to get property of non-object
。
当我在dd($user)
方法中show
(或在视图中,并不重要)时,我只得到string[6] {user}
,这意味着我没有通过{{ 1}}成功转到$user
路线。
官方文档提供了这个示例:user.show
这似乎与我的案例相关,我认为在我的代码中应该是这样的:return Redirect::route('profile', array('user' => 1));
?
有趣的是,如果在return Redirect::route('user.show', ['user' => $user]);
方法中我尝试从会话中获取用户对象(show
),并将其转储,如下所示:
Auth::user()
它仍然是NULL,但如果我将其转储到public function show($user)
{
$user = Auth::user();
dd($user);
...
方法:
index
,然后它返回正确的对象,充满了参数和值...我不知道发生了什么,为什么在一种方法中我有会话对象,但在另一种方法中,我不知道
有关如何解决此问题的任何建议?
更新:我将其缩小到public function index()
{
if (Auth::check()) {
dd(Auth::user());
...
方法中的此实现:
store
并在return Redirect::route('user.show')->with('user', $user);
方法中:
show
因为显然唯一可以传递将爆炸成单个变量的数组的地方是$user = Session::get('user');
return View::make('user.edit', ['user' => $user]);
,而View::make
,Redirect::to
和Redirect::action
等等。 ,您必须使用Redirect::route
功能。然后,这些值将在->with('key', $value)
单例中提供。
尽管如此,我仍然在网址中获得Session
。而且我不知道如何摆脱这个......
答案 0 :(得分:0)
您需要将id
用户传递到user.show
路由,而不是$user
本身。
return Redirect::route('user.show', [$user->id]);