Saat ini kita akan membuat Rules sesuai yang kita inginkan. Misalnya company_start_date, apabila dipilih tanggal melebihi tanggal hari ini, maka akan memberikan pesan error.
1. Modifikasi Companies.php pada function rules. Kita berikan checkDate, yaitu fungsi untuk mengecek tanggal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public function rules() { return [ [['company_name', 'company_email', 'company_address'], 'required'], [['company_start_date', 'company_created_date'], 'safe'], ['company_start_date','checkDate'], [['company_status'], 'string'], [['file'],'file'], [['company_name','logo', 'company_email'], 'string', 'max' => 100], [['company_address', 'logo'], 'string', 'max' => 255] ]; } public function checkDate($attribute,$params){ $today = date('Y-m-d'); $selectedDate = date($this->company_start_date); if($selectedDate>$today) { $this->addError($attribute,'Company Start Date Must Not Exceed Today'); } } |
2. Masuk ke _form.php dari Companies, dan aktifkan enableAjaxValidation.
1 |
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data'],'enableAjaxValidation'=>true]); ?> |
3. Modifikasi CompaniesController untuk melakukan pengecekan :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
public function actionCreate() { $model = new Companies(); $branch = new Branches(); if(Yii::$app->request->isAjax && $model->load($_POST)) { Yii::$app->response->format = 'json'; return \yii\widgets\ActiveForm::validate($model); } if ($model->load(Yii::$app->request->post()) && $branch->load(Yii::$app->request->post())) { $imageName = $model->company_name; if(!empty($model->file)){ $model->file = UploadedFile::getInstance($model,'file'); $model->file->saveAs('uploads/'.$imageName.'.'.$model->file->extension ); $model->logo = 'uploads/'.$imageName.'.'.$model->file->extension; } $model->company_created_date = date('Y-m-d h:m:s'); $model->save(); $branch->companies_company_id = $model->company_id; $branch->branch_created_date = date('Y-m-d h:m:s'); $branch->save(); return $this->redirect(['view', 'id' => $model->company_id]); } else { return $this->render('create', [ 'model' => $model, 'branch'=> $branch, ]); } } |
Jika tanggal dipilih tidak sesuai rules, maka akan muncul error :
Tutorial ini sebagai dokumentasi dan pembelajaran pribadi sekalian belajar terjemahin bahasa Inggris, dan siapa tahu bermanfaat buat orang lain. Sumber lengkapnya diambil dari Youtube DoingITEasy Channel.