2017-04-10 13 views
0

質問があります。フォームデータを保存するYii2

ここで、更新のための追加のフォームモデル(たとえばfirst_name)を作成したいとします。そこで次のフォームモデルを作成しました:

class UpdateUserFirstNameForm extends Model 
{ 
    public $first_name 

    public function rules() 
    { 
     return [ 
      // some rules for first_name 
     ]; 
    } 

そして、このフォームを保存する方法は?私はコントローラーで何を書いていますか?

+0

あなた 'user'テーブルを、名前のフィールドを持っています'first_name'? – gmc

+0

はい、確かです。あなたは@property to userモデル –

答えて

0

をdbにアクセスがない私はのはid_userを言わせて、ユーザーのidのためのあなたのUpdateUserFirstNameForm内の別の属性を作成します。次に、ユーザーのIDと(ユーザーの名字のテキスト入力と共に)activeHiddenFieldをフォームに作成します。今コントローラで

は、あなたが、あなたのモデルにポストコンテンツをロードIDでユーザーを検索して、新しい最初の名前で Userモデル更新:

$model = new UpdateUserFirstNameForm(); 
if ($model->load(Yii::$app->request()->post() and $model->validate()) { 
    $user = User::findOne($model->id_user); 
    if ($user == null) 
    throw new NotFoundHttpException(); 
    $user->first_name = $model->first_name; 
    $user->save(); 
} 
+0

でOKです、もう一つのケース:ルール内の私の 'user'モデルに' last_name' =>が必要です。 'save'メソッドが' validate'メソッドを呼び出すため、 'first_name'フィールドを更新する' save'メソッドを呼び出すと、エラーになります。 –

+0

しかし、あなたのユーザーをdbから探し出してレコードを返す場合、データは正しいはずですか? – gmc

+0

はい。私はそう思う。 –

0

なぜ、別のモデルのUpdateUserFirstNameFormを作成したいのですが、コントローラの中には何でも作ることができます。更新、保存または削除そして

class UpdateUserFirstNameForm extends Model 

がちょうど検証に使用され、

関連する問題