Tips berikut akan menunjukkan salah satu cara untuk membuat component yang bisa menampilkan status. Misalnya kita punya tabel branches, statusnya bisa Active, Pending, Disabled, Closed.
1. Buat tabel branches dengan atribut berikut, kemudian generate Model dan CRUDnya dengan Gii.
2. Buat folder component di dalam folder common, dan buat folder flaghelper di dalam folder component tersebut. Buat file baru BranchStatusFlag.php di dalamnya.
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 |
<?php namespace common\components\flaghelper; use Yii; /** * */ class BranchStatusFlag { const BRANCH_PENDING = 0; const BRANCH_ACTIVE = 1; const BRANCH_DISABLED = 2; const BRANCH_CLOSED = 3; public static function getBranchStatusFlagList() { return [ self::BRANCH_PENDING => Yii::t('app', 'Branch Pending'), self::BRANCH_ACTIVE => Yii::t('app', 'Branch Active'), self::BRANCH_DISABLED => Yii::t('app', 'Branch Disabled'), self::BRANCH_CLOSED => Yii::t('app', 'Branch Closed'), ]; } } |
3. Pada view http://yii2tips.local/branches/create, kita akan merubah tampilan Branch Status menjadi dropdownlist dengan nilai yang didapat dari Component BranchStatusFlag.
Modifikasi _form.php
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 |
<?php use yii\helpers\Html; use yii\widgets\ActiveForm; /* @var $this yii\web\View */ /* @var $model common\models\BranchesModel */ /* @var $form yii\widgets\ActiveForm */ $branchStatus = \common\components\flaghelper\BranchStatusFlag::getBranchStatusFlagList(); ?> <div class="branches-model-form"> <?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'branch_name')->textInput(['maxlength' => true]) ?> <?= $form->field($model, 'branch_address')->textInput(['maxlength' => true]) ?> <?= $form->field($model, 'branch_created_date')->textInput() ?> <?= $form->field($model, 'branch_status')->dropDownList($branchStatus,['prompt'=>'Select Branch Status']); ?> <?= $form->field($model, 'companies_company_id')->textInput() ?> <div class="form-group"> <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?> </div> |
4. Coba tambahkan sebuah branch, maka nilai pada database akan mengikuti Branch Status yang dipilih.