如何在YII2中将自己的数据添加到POST?

时间:2018-10-11 22:23:53

标签: ajax database forms activerecord yii2

我对在表单外添加一些数据并将其与表单数据一起发送提出疑问。看!我有3个字段ActiveForm:

名称(文本) 电子邮件(电子邮件) 课程(隐藏)

好的,但是我需要再添加一个名为“ status”的状态。我不想添加隐藏字段,只想在控制器或模型内部添加。

如何?

控制器:

public function actionFree()
{
    $model = new SubscribeForm();

    $this->view->title = "ШКОЛА ПИСАТЕЛЬСКОГО МАСТЕРСТВА: Новичок курс";

    if ($post = $model->load(Yii::$app->request->post())) {
        if ($model->save()) {
            Yii::$app->session->setFlash('success', 'Данные приняты');
            return $this->refresh();
        }
        else {
            Yii::$app->session->setFlash('error', 'Ошибка');
        }
    }
    else {
        // страница отображается первый раз
        return $this->render('free-course', ['model' => $model, 'course_id' => 1]);
    }
}

型号:

class SubscribeForm extends ActiveRecord
{
    public $fio;
    public $email;
    public $course;
    public $status;

    public static function tableName()
    {
        return 'users';
    }

    public function rules()
    {
        return [
            // username and password are both required
            [['fio', 'email'], 'required'],
            [['email'], 'unique'],
            ['email', 'email'],
            ['email', 'safe']
        ];
    }
}

1 个答案:

答案 0 :(得分:1)

您可以像这样在控制器中设置值:

public function actionFree()
{
    $model = new SubscribeForm();
    $model->status = 'your-status-value';
    // ... the rest of your code

或者您可以在模型中添加默认值。这样,您仍然可以否决控制器或表单字段中的值,但是在没有其他任何内容的情况下将获得该值。

public function rules()
{
    return [
        ['status', 'default', 'value' => 'your-default-status-value'],
        // .. other rules
    ];
}