保存表单数据Yii2

时间:2017-04-10 13:40:21

标签: forms yii2 save

我有一个问题。让我们说我们有一个像这样的模型:

/**
 * This is the model class for table "user".
 *
 * @property integer $id
 * @property string $username
 * @property string $first_name
 * @property string $last_name
 */
 class User extends \yii\db\ActiveRecord
 {
     public static function tableName()
     {
         return 'user';
     }

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

     public function attributeLabels()
     {
         return [
             // some attributes
         ];
     }

现在我想为仅更新(例如)first_name创建其他表单模型。所以我创建了下一个表单模型:

 class UpdateUserFirstNameForm extends Model
 {
     public $first_name

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

问题是 - 我如何保存这张表格?我必须在控制器中写什么?

2 个答案:

答案 0 :(得分:0)

为什么你想要创建另一个模型UpdateUserFirstNameForm,你可以在你的控制器内做任何事情。更新,保存或删除。和

class UpdateUserFirstNameForm extends Model

仅用于验证,无法访问db

答案 1 :(得分:0)

我会在UpdateUserFirstNameForm为用户id创建另一个属性,让我们说id_user。然后,在表单中创建一个带有用户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();
}