I want my dropdownlist on change to load Gridview on change. I have tried several means but not loading any data. I tried to make $faculty as a parameter so that the Editable Gridview will be loaded based on the faculty, thats where faculty_id (in Faculties) = academic_level_faculty_id (in AcademicLevels) but dont really know how to apply it.
I tried to use $dispStatus, but can’t go further.
This is what I have
7637
This is what I want
7638
Controller (AcademicLevelsController)
public function actionSortOrder()
{
$FptModel = new \app\models\AcademicLevels();
$FccModel = new \app\models\Faculties();
$dispStatus = false;
if(!empty($_POST['Faculties']['faculty_id'])) {
$dispStatus = true;
$FccModel = \app\models\Faculties::findOne($_POST['Faculties']['faculty_id']);
}
$modelSearch = new AcademicLevelsSearch();
$dataProvider = $modelSearch->searchlevels(Yii::$app->request->queryParams);
if (Yii::$app->request->post('hasEditable'))
{
$levelid = Yii::$app->request->post('editableKey');
$level = AcademicLevels::findOne($levelid);
$out = Json::encode(['output'=>'', 'message'=>'']);
$post = [];
$posted = current($_POST['AcademicLevels']);
$post['AcademicLevels'] = $posted;
if($level->load($post))
{
$level->updated_at = new \yii\db\Expression('NOW()');
$level->updated_by = Yii::$app->getid->getId();
$level->save();
$output = ($level->sort_order);//'my values';
$out = Json::encode(['output'=>'', 'message'=>'']);
}
echo $out;
return;
}
return $this->render('sort-order', [
'FptModel' => $FptModel,
'FccModel' => $FccModel,
'dispStatus'=> $dispStatus,
'modelSearch' => $modelSearch,
'dataProvider' => $dataProvider,
]);
}
ModelSearch (AcademicLevelsSearch)
public function searchlevels($params,$faculty=null)
{
$query = AcademicLevels::find()->where(['is_status' => 0])->andwhere(['=', 'academic_level_faculty_id', $faculty]);
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
$query->andFilterWhere([
'academic_level_id' => $this->academic_level_id,
'academic_level_faculty_id' => $this->academic_level_faculty_id,
'academic_level_department_id' => $this->academic_level_department_id,
'academic_level_programme_id' => $this->academic_level_programme_id,
'is_status' => $this->is_status,
'created_at' => $this->created_at,
'created_by' => $this->created_by,
'updated_at' => $this->updated_at,
'updated_by' => $this->updated_by,
]);
return $dataProvider;
}
Views: sort-order (
<div class="box-body no-padding">
<?php $form = ActiveForm::begin([
'id' => 'sort-order-form',
'fieldConfig' => [
'template' => "{label}{input}{error}",
],
]); ?>
<div class="col-md-12">
<?= $form->field($FccModel, 'faculty_id')->widget(Select2::classname(), [
'data' => ArrayHelper::map(app\models\Faculties::find()->where(['is_status'=>0])->all(), 'faculty_id', 'faculty_name'),
'language' => 'en',
'options' => ['placeholder' => '--- Select Academic Level Category ---',
'onchange'=>'this.form.submit()'
],
'pluginOptions' => [
'allowClear' => true
],
])->label('Faculty'); ?>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
<!---End Select Fees Collection Category--->
<?php
if($dispStatus) {
$levelDetails = \app\models\AcademicLevels::find()->where(['academic_level_faculty_id' => $FccModel->faculty_id, 'is_status'=>0])->asArray()->all();
}
?>
<div class="col-xs-12">
<div class="col-lg-8 col-sm-8 col-xs-12 no-padding jkklmsArLangCss"><h3 class="box-title"><i class="fa fa-edit"></i> <?php echo Yii::t('app', 'Update Academic Level: Sort Order') ?></h3></div>
<div class="col-lg-4 col-sm-4 col-xs-12 no-padding" style="padding-top: 20px !important;">
<div class="col-xs-4 left-padding">
</div>
<div class="col-xs-4 left-padding">
</div>
<div class="col-xs-4 left-padding">
<?= Html::a(Yii::t('app', 'Back'), ['index'], ['class' => 'btn btn-block btn-back']) ?>
</div>
</div>
</div>
<!---Start display fees collection details--->
<div class="box-primary box view-item col-xs-12 col-lg-12 no-padding">
<div class="box-header with-border">
<h3 class="box-title"><i class="fa fa-inr"></i> <?php echo Yii::t('app', 'Academic Level Details'); ?></h3>
</div>
<div class="box-body table-responsive no-padding">
<?php Pjax::begin(['id' => 'pjax-gridview']) ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
// 'filterModel' => $modelSearch,
'pjax' => true,
'export' => false,
'responsive'=>true,
'hover'=>true,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'level_name',
[
'class' => 'kartik\grid\EditableColumn',
'label'=>'Sort Order',
'attribute'=>'sort_order',
'value' =>function($model)
{
return 'the sort order is: '. $model->sort_order;
},
'pageSummary' => true,
'readonly' => false,
'editableOptions'=> [
'asPopover' => true,
'format' => Editable::FORMAT_BUTTON,
'inputType' => Editable::INPUT_TEXT,
'options' => ['class'=>'form-control', 'prompt'=>'Select Sort Order...'],
]
],
[
'label' => Yii::t('app','Faculty'),
'attribute' => 'academic_level_faculty_id',
'value' => 'levelFaculty.faculty_name',
'filter' => ArrayHelper::map(app\models\Faculties::find()->all(), 'faculty_id', 'faculty_name')
],
[
'label' => Yii::t('app','Department'),
'attribute' => 'academic_level_department_id',
'value' => 'levelDepartment.department_name',
'filter' => ArrayHelper::map(app\models\Departments::find()->all(), 'department_id', 'department_name')
],
[
'label' => Yii::t('app','Programme'),
'attribute' => 'academic_level_programme_id',
'value' => 'levelProgramme.programme_name',
'filter' => ArrayHelper::map(app\modules\course\models\AcademicProgrammes::find()->all(), 'academic_programme_id', 'programme_name')
],
// ['class' => 'yii\grid\ActionColumn'],
],
]); ?>
<?php Pjax::end() ?>
</div><!---./end box-body--->