Как добавить данные из формы в БД Yii2
Не уверен ,что этот код вообще юзабельный ,но может можно данные полученные из формы сохранить в бд ?
SiteController
public function actionForm()
{
$form = new BriefForm();
$form->site_name = 'Sa';
$form->email = '[email protected]';
$form->phone = '09723232';
$form->user_FIO = 'YAV';
$form->additional_info= 'vaiasasaco';
$form->save();
if($form->load(Yii::$app->request->post()) ){
$site_name = Html::encode($form->site_name);
$email = Html::encode($form->email);
};
return $this->render('form',
['form' => $form,
'site_name' => $site_name,
'email' => $email,]);
}
models/BriefForm
<?php
namespace app\models;
use Yii; use yii\db\ActiveRecord;
class BriefForm extends ActiveRecord
{
public $site_name;
// public $operation_kind_new;
// public $operation_kind_old;
public $user_FIO;
public $email;
public $phone;
public $additional_info;
public $domain_name;
// public $domain_items = [];
// // ];
// public $old_site_defect_items = [];
public static function tableName(){
return 'brief_form';
}
public function rules(){
return [
[['site_name','operation_kind','user_FIO','email','phone', 'domain_name'], 'required'],
['email' , 'email' , 'message'=> 'Некорректный email' ],
];
}
// public function bd()
// {
// // if (!$this->validate()) {
// // return null;
// // }
// // // $form = new BriefForm();
// // // $form->site_name = $this->site_name;
// // // $form->email = $this->email;
// // // $form->phone = $this->phone;
// // // $form->domain_name = $this->domain_name;
// // // return $form->save() ? $form : null;
// }
}
?>
views/form
<?php $f= ActiveForm::begin(); ?>
<div class="container">
<div class="row mb-2">
<?=$f->field($form , 'site_name')->label('Название вашего сайта'); ?>
<h3 class="text-center">Что нужно сделать</h3>
<div class="col-md-6">
<h3 class="text-center">Создать новый</h3>
<?=$f->field($form , 'domain_name')->label('Домен сайта'); ?>
</div>
<div class="col-md-6">
<h3 class="text-center">Обновить старый</h3>
<?=$f->field($form , 'domain_name')->label('Домен сайта'); ?>
<?=$f->field($form , 'additional_info')->label('Дополнительные сведения'); ?>
</div>
<?=$f->field($form , 'user_FIO')->label('Ваше ФИО'); ?>
<?=$f->field($form , 'email')->label('Ваша почта'); ?>
<?=$f->field($form , 'phone')->label('Ваш номер телефона'); ?>
<?= Html::submitButton('Вперед'); ?>
</div>
</div>
<?php ActiveForm::end(); ?>
Ответы (1 шт):
Автор решения: UKRman
→ Ссылка
Выглядит ужасно, но для решения вашей проблемы додайте в if приёма post сохранения:
if($form->load(Yii::$app->request->post()) && $form->save()){
$site_name = Html::encode($form->site_name);
$email = Html::encode($form->email);
}