editable gridview

I created an editable gridview, but its not saving. Also its displlaying the company_id instead of inspector_name

7205

editable.png

Controller




    public function actionZonalmapping()

    {

        $user = Yii::$app->getid->getId();

         $zonalSession = Yii::$app->session->get('zonal_id');

         $ZonalMaster = ZonalAdministrator::find()->andWhere(['zonal_id' => $zonalSession])->one();

         $ZonalInfo = ZonalAdministrator::findOne($ZonalMaster->zonal_id);

         $zonalZone = Zone::findOne($ZonalMaster->zone_id);

         $zone = $ZonalInfo->zone_id; 


        $model = new InspectionMapping();

        $modelSearch = new InspectionMappingSearch();

        $dataProvider = $modelSearch->searchmappings(Yii::$app->request->queryParams,$zone);

       

    if (Yii::$app->request->post('hasEditable')) 

    {


$_id=$_POST['editableKey'];

$model = $this->findModel($_id);


      $out    = Json::encode(['output'=>'', 'message'=>'']);

      $post = [];

      $posted = current($_POST['InspectionMapping']);

      $post['InspectionMapping'] = $posted;

      if ($model->load($post)) {


        $model->save();

        $output = '';

        if (isset($posted['company_id'])) 

        {

          $output =  $model->inspector->inspector_name;

        }

         $out = Json::encode(['output'=>$output, 'message'=>'']); 

      }

      echo $out;

      return;

    }


        return $this->render('zonalmapping', [

            'model' => $model,

            'modelSearch' => $modelSearch,

            'dataProvider' => $dataProvider,

                ]); 

    }




model




    public function rules()

    {

        return [

            [['building_id', 'tariff_id', 'fee_id', 'company_id', 'zone_id', 'is_inspected', 'is_paid', 'is_booked', 'is_mapped_to_inspector', 'is_mapped_to_zone'], 'integer'],

            [['mapping_date'], 'required'],

            [['mapping_date'], 'safe']

        ];

    }


    /**

     * @inheritdoc

     */

    public function attributeLabels()

    {

        return [

            'inspection_mapping_id' => 'Inspection Mapping ID',

            'building_id' => 'Building ID',

            'tariff_id' => 'Tariff ID',

            'fee_id' => 'Fee ID',

            'company_id' => 'Company ID',

            'zone_id' => 'Zone ID',

            'is_inspected' => 'Is Inspected',

            'is_paid' => 'Is Paid',

            'is_booked' => 'Is Booked',

            'is_mapped_to_zone' => 'Is Mapped To Zone',

            'is_mapped_to_inspector' => 'Is Mapped To Inspector',

            'mapping_date' => 'Mapping Date',

        ];

    }


    public function getBuilding()

    {

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

    }   


    public function getTariff()

    {

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

    }   


    public function getFee()

    {

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

    }  


    public function getZone()

    {

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

    } 


    public function getInspector()

    {

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

    }   


    public function getBuildingName() 

    {

    return $this->building->building_name;

    }   



modelSearch




     public function searchmappings($params,$zone=null)

    {

        $query = InspectionMapping::find()->where(['=', 'is_mapped_to_zone', 1])->andwhere(['=', 'zone_id', $zone]);


        $dataProvider = new ActiveDataProvider([

            'query' => $query,

        ]);


        $this->load($params);


        if (!$this->validate()) {

            return $dataProvider;

        }


        $query->andFilterWhere([

            'inspection_mapping_id' => $this->inspection_mapping_id,

            'building_id' => $this->building_id,

            'tariff_id' => $this->tariff_id,

            'fee_id' => $this->fee_id,

            'company_id' => $this->company_id,

            'zone_id' => $this->zone_id,

            'is_inspected' => $this->is_inspected,

            'is_paid' => $this->is_paid,

            'is_booked' => $this->is_booked,

            'is_mapped_to_inspector' => $this->is_mapped_to_inspector,

            'mapping_date' => $this->mapping_date,

        ]);


        return $dataProvider;

    }   



view




<div class="mapping-form">


    <h1><?= Html::encode($this->title) ?></h1>

    <?php // echo $this->render('_search', ['model' => $searchModel]); 

        $user = Yii::$app->getid->getId();

         $zonalSession = Yii::$app->session->get('zonal_id');

         $ZonalMaster = ZonalAdministrator::find()->andWhere(['zonal_id' => $zonalSession])->one();

         $ZonalInfo = ZonalAdministrator::findOne($ZonalMaster->zonal_id);

         $zonalZone = Zone::findOne($ZonalMaster->zone_id);

         $zone = $ZonalInfo->zone_id;

    ?>


<?php 

$companys=ArrayHelper::map(Inspector::find()->asArray()->andWhere(['zone_id' => $zone])->all(), 'company_id', 'inspector_name');

 ?>


    <?= GridView::widget([

        'dataProvider' => $dataProvider,

      //  'filterModel' => $searchModel,

        'pjax' => true,

        'export' => false,

        'columns' => [

            ['class' => 'yii\grid\SerialColumn'],

            [

            'label'=>'Building',

            'attribute'=>'building_id',

            'value'=>'building.building_name',

            ],           

            [

            'label'=>'Zone',

            'attribute'=>'zone_id',

            'value'=>'zone.zone_name',

            ],


            [

              'class' => 'kartik\grid\EditableColumn',

              'label'=>'Inspector',

              'attribute'=>'company_id',

              'value'  => 'inspector.inspector_name',

             // 'displayValueConfig' => $companys,

              'pageSummary' => true,

              'editableOptions'=> [

                'header' => 'Inspector',

                'format' => Editable::FORMAT_BUTTON,

                'inputType' => Editable::INPUT_DROPDOWN_LIST,

                'data'=>  $companys,//$StatusList,

                'options' => ['class'=>'form-control', 'prompt'=>'Select Inspector...'],

              ]

            ],


            [

            'label'=>'Tariff Group',

            'attribute'=>'tariff_id',

            'value'=>'tariff.tariff_group_detail',

            ],                        

            [

            'label'=>'Fee',

            'attribute'=>'fee_id',

            'value'=>'fee.value',

            ],                  


        ],

    ]); ?>


</div>



Please help