我正在运行Lavarel并越过以下代码:
{{ link_to_route('users.edit', 'Edit', array($user->id), array('class' => 'btn btn-info')) }}
这是./app/views/users/edit.blade.php
@extends('users.scaffold')
@section('main')
<h1>Edit User</h1>
{{ Form::model($user, array('method' => 'patch', 'route' => array('users.update', $user->id))) }}
<ul>
<li>
{{ Form::label('username', 'Username: ') }}
{{ Form::text('username') }}
</li>
<li>
{{ Form::label('password', 'Password: ') }}
{{ Form::text('password') }}
</li>
<li>
{{ Form::label('email', 'Email: ') }}
{{ Form::text('email') }}
</li>
<li>
{{ Form::label('phone', 'Phone: ') }}
{{ Form::text('phone') }}
</li>
<li>
{{ Form::label('name', 'Name: ') }}
{{ Form::text('name') }}
</li>
<li>
{{ Form::submit('Update', array('class' => 'btn btn-info')) }}
{{ link_to_route('users.show', 'Cancel', $user->id, array('class' => 'btn')) }}
</li>
</ul>
{{ Form::close() }}
@if (($errors->any()))
<ul>
{{ implode('', $errors->all('<li class="error">:message</li>')) }}
</ul>
@endif
@stop
以上代码在模板文件edit.blade.php
中,当用户点击Edit
按钮时,将用户id $user->id
传递给定义了编辑动作的控制器UsersController@edit
,
public function edit($id)
{
$user = User::find($id);
if(is_null($user)) {
return 'Not found: '.$id;
// return Redirect::route('users.index');
}
return Redirect::route('users.edit', compact('user'));
}
这里的问题是$id
不是从link_to_route()
函数传递的。谁能帮我找出问题在哪里吗?谢谢。
下面是DOM的结果:
<a href="http://laravel.learn/users/1/edit" class="btn btn-info">Edit</a>
routes.php
Route::resource('users', 'UsersController');
这是点击编辑按钮后的结果:
Not found: {"id":1,"username":"john","password":"johndoe","email":"johndoe@gmail.com","phone":"123456","name":"John","created_at":"2013-06-07 08:13:28","updated_at":"2013-06-07 08:13:28"}
根据您的信息-看起来问题不是link_to_route()
-您可以看到错误在您的代码中进一步。
看起来您已经将路由绑定到模型,因此在编辑函数中$id
实际上是已经从数据库中填充的$user
。
你可以告诉这种情况-因为你的自定义"not found"错误给了你用户数据。
如果你把你的代码改成这样-它能工作吗?
public function edit(User $user)
{
return Redirect::route('users.edit', compact('user'));
}