我遇到错误:
Some mandatory parameters are missing ("users") to generate a URL for route "users.update".
我的观点是:
{{ Form::open( array('action' => array('UsersController@update')) ) }}
<div> {{ Form::label('username', 'Username:') }}
{{ Form::text('username', $user->username , array('class' => 'form-control')) }}</div>
<div> {{ Form::label('email', 'Email Address:') }}
{{ Form::text('email', $user->email , array('class' => 'form-control')) }}</div>
<div> {{ Form::label('new_password', 'New Password:') }}
{{ Form::text('new_password', '', array('class' => 'form-control')) }} </div>
<div> {{ Form::label('old_password', 'Old Password:') }}
{{ Form::text('password', '', array('class' => 'form-control')) }} </div>
{{ Form::submit() }}
{{ Form::close() }}
我的控制器中还有一个链接到更新的功能:
public function update() {
return 'This is an update';
}
最后,当我检查Artisan命令中可用的所有路线时,我发现更新的路线为:users/{users}
我的代码出了什么问题?我正在尝试更新用户,但它会抛出此错误。
答案 0 :(得分:0)
您打开FORM的方式,需要一个路由参数。如果您不想传递参数,只需使用以下内容:
{{ Form::open(array('action' => 'UsersController@update')) }}
而不是:
{{ Form::open( array('action' => array('UsersController@update')) ) }}
答案 1 :(得分:0)
您的路线定义为期望传递变量$ users。因为:{users}
相反,您应该将其定义为:
Route::post('users/update', 'UsersController@update');
然后在你的函数update()中获取post变量:
$users_data = Input::get();
OR
如果要保留参数,请通过传递附加参数重新定义表单:
{{ Form::open( array('action' => array('UsersController@update', $id)) ) }}
答案 2 :(得分:0)
即使您正在设置操作,您仍可能需要一条路线。我强烈建议您始终使用CLEARED DEFINED路线到您的控制器。看看Resource Controllers是否对你有所帮助,万一你不想定义每条上帝之路(我不这样做)。
并且,最后回答你的问题:我认为
{{ Form::open(array('action' => 'UsersController@update')) }}
......可以解决您的问题。希望能帮助到你。对不起,我的英语不好! :d