[英]Laravel - Routing to update error
我遇到錯誤:
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}
我的代碼有什么問題? 我正在嘗試更新用戶,並引發此錯誤。
您打開FORM的方式需要一個路由參數。 如果您不想傳遞參數,請使用以下命令:
{{ Form::open(array('action' => 'UsersController@update')) }}
代替:
{{ Form::open( array('action' => array('UsersController@update')) ) }}
定義路由的方式是希望傳遞$ users變量。 由於以下原因: {users}
相反,您應該像這樣定義它:
Route::post('users/update', 'UsersController@update');
然后在您的函數update()中通過以下方式獲取post變量:
$users_data = Input::get();
要么
如果要保留參數,請通過傳遞附加參數來重新定義表單:
{{ Form::open( array('action' => array('UsersController@update', $id)) ) }}
即使您要設置動作,您可能仍需要一條路線。 我強烈建議您始終使用到控制器的CLEARED DEFINED路由。 查看資源控制器是否對您有幫助,以防您不想定義每條上帝的路線(我不想要)。
最后,回答您的問題:我認為
{{ Form::open(array('action' => 'UsersController@update')) }}
...可能會解決您的問題。 希望能幫助到你。 對不起,我的英語不好! :D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.