簡體   English   中英

Laravel-路由更新錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM