我对在表单外添加一些数据并将其与表单数据一起发送提出疑问。看!我有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']
];
}
}
答案 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
];
}