我在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"}
答案 0 :(得分:0)
根据您的信息 - 问题似乎不在于link_to_route()
- 您可以在代码中看到错误。
看起来你已经绑定了到模型的路径,所以在编辑函数中$id
实际上已经从数据库中填充了$user
。
您可以判断是这种情况 - 因为您的自定义“未找到”错误会为您提供用户数据。
如果您将代码更改为此 - 是否有效?
public function edit(User $user)
{
return Redirect::route('users.edit', compact('user'));
}