toggle popup dropdown

I have a toggle dropdown

7124

dropdown.PNG

7125

dropdown_appearance.PNG

I have three tables building_tariff, inspector and inspector_category.

How do I split the value (varchar in the table) in the toggle popup which is separated by comma(,)

7128

inspector_table.PNG

and relate each of the values in tariff_code to tariff_id and save its id into inspector_category table

7129

inspector_category_table.PNG

building_tariff

7126

building_tariff.PNG

7127

building_tariff2.PNG

model




<?php


namespace app\modules\consumers\models;


use Yii;

use app\modules\consumers\models\BuildingTariff;




class BuildingTariff extends \yii\db\ActiveRecord

{

    /**

     * @inheritdoc

     */

    public static function tableName()

    {

        return 'building_tariff';

    }


    /**

     * @inheritdoc

     */

    public function rules()

    {

        return [

            [['cat_id', 'tariff_code', 'tariff_desc'], 'required', 'message' => ''],

            [['cat_id'], 'integer'],

            [['tariff_code'], 'unique'],

            [['tariff_code'], 'string', 'max' => 5],

            [['tariff_desc'], 'string', 'max' => 100],

            [['cat_id', 'tariff_desc'], 'unique', 'targetAttribute' => ['cat_id', 'tariff_desc'], 'message' => Yii::t('consumers', 'The combination of Customer Classificaton and Description has already been taken.')]

        ];

    }


    /**

     * @inheritdoc

     */

    public function attributeLabels()

    {

        return [

            'tariff_id' => Yii::t('consumers', 'Tariff'),

            'cat_id' => Yii::t('consumers', 'Tariff Class'),

            'tariff_code' => Yii::t('consumers', 'Classification Code'),

            'tariff_desc' => Yii::t('consumers', 'Description'),

            'tariff_group' => Yii::t('consumers', 'Group'),

            'tariff_group_detail' => Yii::t('consumers', 'Group Detail'),

        ];

    }


    /**

     * @return \yii\db\ActiveQuery

     */

    public function getTariffCategory()

    {

        return $this->hasOne(BuildingCategory::className(), ['cat_id' => 'cat_id']);

    }  


    /**

     * @return \yii\db\ActiveQuery

     */

    public function getCategory()

    {

        return $this->hasOne(BuildingCategory::className(), ['cat_id' => 'cat_id']);

    }    


    public static function getBuildingTariffs()

    {

        $dataTmp = BuildingTariff::find()->orderBy('tariff_name')->all();

        $result = yii\helpers\ArrayHelper::map($dataTmp, 'tariff_id', 'tariff_name');

        return $result;

    }      

}




Inspector

model




<?php


namespace app\modules\contractors\models;


use Yii;

use app\modules\contractors\models\Inspector;

use app\models\User;

use yii\base\Exception;

use app\models\City;

use app\models\State;

use app\models\Zone;

use app\modules\consumers\models\BuildingTariff;


class Inspector extends \yii\db\ActiveRecord

{

    /**

     * @inheritdoc

     */

    public $email_confirm, $importFile;


    const TYPE_YES = 'Yes';

    const TYPE_NO = 'No';


    public static function tableName()

    {

        return 'inspector';

    }


    /**

     * @inheritdoc

     */

    public function rules()

    {

        return [

            [['inspector_name','is_valid', 'city_id','state_id','zone_id', 'location_long', 'address', 'cac_number', 'email', 'phone_num', 'location_lat', 'created_at', 'created_by'], 'required', 'message' => ''],

            [['email'],'email', 'message'=>"The email isn't correct"],

            ['email','filter', 'filter' => 'trim'],

            ['inspector_name', 'unique'],

          //  [['email_confirm'],'required', 'on'=>'register'],

            [['city_id','state_id','zone_id','created_by', 'updated_by'], 'integer', 'message' => ''],

            [['laptop_num', 'pc_num', 'printer_num', 'phone_num', 'staff_yoe1','staff_yoe2','staff_yoe3', 'is_certified','nerc_staff'], 'integer', 'message' => ''],

            [['staff_name3','staff_name2','staff_name1','electrical_equipment_name', 'electrical_software_name', 'address'], 'string'],

            [['inspector_name','cac_number','inspector_category'], 'string', 'max' => 254],

            [['email'], 'string', 'max' => 254],

           // ['email', 'compare', 'compareAttribute'=>'email_confirm','message'=>'Email mismatch. Please confirm...', 'on' => 'register'],

            [['email'], 'email'],

            [['importFile'], 'file', 'extensions' => 'xlsx, csv', 'skipOnEmpty' => false, 'checkExtensionByMimeType'=>false, 'uploadRequired' => Yii::t('contractors', 'Please select file'), 'on' => 'import-inspector'],

   //['confirm_password', 'compare','compareAttribute'=>'create_password', 'on'=>'firstTime'],         

        ];

    }

    //'contractor_unique_id',

// 'electrical_equipment_name', 'electrical_software_name', 'laptop_num', 'pc_num', 'printer_num',

    //'staff_name1', 'staff_yoe1', 'staff_nerc_no1','staff_name2', 'staff_yoe2', 'staff_nerc_no2','staff_name3', 'staff_yoe3', 'staff_nerc_no3',

    /**

     * @inheritdoc

     */


    /*

    * get Import file path

    */

    public function getImportFilePath()

    {

        return Yii::getAlias('@webroot').'/data/import_files/contractor_files/';

    }


    /*

    * save import file

    */

    public function saveImportFile()

    {

        if ($this->validate(['importFile'])) {

            $newName = $this->importFile->basename.'_'.\Yii::$app->session->get('clg_id').'_'.\Yii::$app->user->id.'_'.time().'.'.$this->importFile->extension; 

            //print_r($this->getImportFilePath()); exit;

            $returnResults = $this->importFile->saveAs($this->getImportFilePath().$this->importFile = $newName);

            

            if($returnResults) {

                return true;    

            }

        } 

        return false;

    }


    public function attributeLabels()

    {

        return [

            'inspector_name' => Yii::t('contractors', 'Inspector Name'),

            'company_id' => Yii::t('contractors', 'Company'),

            'contractor_unique_id' => Yii::t('contractors', 'Contractor Unique ID'),

            'is_valid' => Yii::t('contractors', 'Is Valid'),

            'nerc_staff' => Yii::t('contractors', 'Quantity of NERC Staff (1, 2, 3, ...etc)'),

            'location_long' => Yii::t('contractors', 'Longitude'),

            'location_lat' => Yii::t('contractors', 'Lattitude'),

            'address' => Yii::t('contractors', 'Address'),

            'city_id' => Yii::t('consumers', 'City'),

            'state_id' => Yii::t('consumers', 'State'),

            'zone_id' => Yii::t('consumers', 'Inspection Zones Address'), 

            'inspector_category' => Yii::t('consumers', 'Tariff Class'),            

            'cac_number' => Yii::t('contractors', 'Cac Number'),

            'email' => Yii::t('contractors', 'Email'),

            'electrical_equipment_name' => Yii::t('contractors', 'Electrical Diagnostic Computer Hardware'),

            'electrical_software_name' => Yii::t('contractors', 'Electrical Diagnostic Computer Software'),

            'laptop_num' => Yii::t('contractors', 'Number of Laptop'),

            'pc_num' => Yii::t('contractors', 'Number of Desktop Computer'),

            'printer_num' => Yii::t('contractors', 'Number of Printer'),

            'phone_num' => Yii::t('contractors', 'Phone Number'),

      //      'email_confirm' => Yii::t('contractors', 'Confirm Email'),

            'staff_name1' => Yii::t('contractors', 'Nerc Certfied Staff Name 1'),

            'staff_name2' => Yii::t('contractors', 'Nerc Certfied Staff Name 2'),

            'staff_name3' => Yii::t('contractors', 'Nerc Certfied Staff Name 3'),

            'staff_yoe1' => Yii::t('contractors', 'Nerc Certfied staff Yr of Exp 1'),

            'staff_yoe2' => Yii::t('contractors', 'Nerc Certfied staff Yr of Exp 2'),

            'staff_yoe3' => Yii::t('contractors', 'Nerc Certfied staff Yr of Exp 3'),

            'staff_nerc_no1' => Yii::t('contractors', 'Nerc Certfied staff Number 1'),

            'staff_nerc_no2' => Yii::t('contractors', 'Nerc Certfied staff Number 2'),

            'staff_nerc_no3' => Yii::t('contractors', 'Nerc Certfied staff Number 3'),

            'is_certified' => Yii::t('contractors', 'Is Certified'),

            'contractor_user_id' => Yii::t('contractors', 'contractor Manager User ID'),

            'created_at' => Yii::t('contractors', 'Created At'),

            'created_by' => Yii::t('contractors', 'Created By'),

            'updated_at' => Yii::t('contractors', 'Updated At'),

            'updated_by' => Yii::t('contractors', 'Updated By'),

        ];

    }


    function getName() 

    {

        return $this->inspector_name;

    }


    function getContractorNo() 

    {

        return $this->contractor_unique_id;

    }


    public function getCity() {

        return $this->hasOne(City::className(), ['city_id' => 'city_id']);

    }    


    /**

     * @return \yii\db\ActiveQuery

     */


    public function getState()

    {

        return $this->hasOne(State::className(), ['state_id' => 'state_id']);

    }    


    /**

     * @return \yii\db\ActiveQuery

     */


    public function getZone()

    {

        return $this->hasOne(Zone::className(), ['zone_id' => 'zone_id']);

    }  

        /*

    * get unique id of contractor/inspector

    */

    public function getUniqueId()

    {

        $contractor_uniq_no = \app\modules\contractors\models\Inspector::find()->max('contractor_unique_id');

        $uniq_id = NULL;

        if(empty($contractor_uniq_no)) {

            $uniq_id = $model->contractor_unique_id = 1;

        }

        else {

            $chk_id = Inspector::find()->where(['contractor_unique_id' => $contractor_uniq_no])->exists(); 

            if($chk_id)

                $uniq_id = $contractor_uniq_no + 1;

            else

                $uniq_id = $contractor_uniq_no;       

        }

        

        return $uniq_id;

    }


    public static function getContractorPhoto($imgName)

    {

        $dispImg = is_file(Yii::getAlias('@webroot').'/data/contractor_images/'.$imgName) ? true :false;

        return Yii::getAlias('@web')."/data/contractor_images/".(($dispImg) ? $imgName : "no-photo.png");

    }


    /**

     * @return \yii\db\ActiveQuery

     */

    public function getUpdatedBy()

    {

        return $this->hasOne(User::className(), ['user_id' => 'updated_by']);

    }


    /**

     * @return \yii\db\ActiveQuery

     */

    public function getCreatedBy()

    {

        return $this->hasOne(User::className(), ['user_id' => 'created_by']);

    }  


    public function getContractorpMaster()

    {

        return $this->hasOne(EmpMaster::className(), ['emp_master_id' => 'emp_info_emp_master_id']);

    }


    /**

     * @return \yii\db\ActiveQuery

     */

    public function getContractorUser()

    {

        return $this->hasOne(\app\models\User::className(), ['user_id' => 'contractor_user_id']);

    }


    public static function getValidStatus()

    {

        return [

            Yii::t('contractors', self::TYPE_YES) => Yii::t('contractors', 'Yes'),

            Yii::t('contractors', self::TYPE_NO) => Yii::t('contractors', 'No'), 

        ];  

    }

/*

    public function getInspectorClassification() 

    {

        return $this->hasMany(InspectorClassificationRating::className(), ['cat_id' => 'cat_id']);

    }

    */

}




view




<?php


use yii\helpers\Html;

use yii\widgets\ActiveForm;

use yii\helpers\ArrayHelper;

use yii\jui\DatePicker;

use yii\helpers\Url;

use kartik\widgets\Select2;

use app\models\City;

use app\models\State;

use app\models\Zone;

use app\modules\contractors\models\Inspector;

use app\modules\consumers\models\BuildingTariff;

use app\modules\consumers\models\InspectorCategory;

use kartik\typehead\TypeaheadBasic;

//use kartik\widgets\DepDrop;

use kartik\depdrop\DepDrop;


?>


<style>

.box .box-solid {

     background-color: #F8F8F8;

}

</style>

<script>

$(function () {

  $('[data-toggle="popover"]').popover({placement: function() { return $(window).width() < 768 ? 'bottom' : 'right'; }})

})

</script>


<!--


-->

<div class="col-xs-12 col-lg-12">

    <div class="<?php echo $model->isNewRecord ? 'box-success' : 'box-info'; ?> box view-item col-xs-12 col-lg-12">


<div class="inspector-form">


    <?php $form = ActiveForm::begin([

            'id' => 'inspector-form',

            'fieldConfig' => [

                'template' => "{label}{input}{error}",

            ],

    ]); ?>

    <div class="col-xs-12 col-sm-12 col-lg-12 no-padding">

        <div class="col-xs-12 col-sm-6 col-lg-6">

            <?= $form->field($model, 'inspector_name')->textInput(['maxlength' => true]) ?>

        </div>

        <div class="col-xs-12 col-sm-6 col-lg-6">

    <?php $data = ArrayHelper::map(BuildingTariff::find()->asArray()->all(), 'tariff_code', 'tariff_code');

    foreach($data as $d)

        $tariffcode[]=$d;


    echo $form->field($model, 'inspector_category')->widget(Select2::classname(),[

            'name' => 'inspector_category[]',

            'options' => ['placeholder' => ''],

            'pluginOptions' => [

                'tags' => $tariffcode,

                'maximumInputLength' => 20,

                'multiple' => true

            ],

        ]); 

    ?>

        </div>



Thanks a lot everyone. I’ve been able to resolve it on my own. Am grateful.