我对index.php的过滤器无效

时间:2018-05-24 04:14:07

标签: php yii2

该模型是Booking.php。我需要从另一个名为ServiceCategory.php的模型中获取数据,并在我的index.php上的Gridview中添加一个过滤器。我在view / index.php上创建了过滤器,如下所示。

['label' => 'Service Category', 'attribute' => 'category.name', 'filter' => ArrayHelper::map(app\models\Servicecategory::find()->where(['status' => true])->asArray()->all(), 'id', 'name')],

这是我的index.php

<?php

use yii\helpers\Html;
use yii\helpers\ArrayHelper;
use yii\grid\GridView;
use app\models\Servicecategory;

/* @var $this yii\web\View */
/* @var $searchModel app\models\BookingSerach */
/* @var $dataProvider yii\data\ActiveDataProvider */

$this->title = 'Bookings';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="list-booking">

    <h1 class=""><?= Html::encode($this->title) ?></h1>
    <?php // echo $this->render('_search', ['model' => $searchModel]); ?>

    <p class="form-inline text-right">
        <label>Client:</label>
        <?= Html::dropDownList('client', null, ArrayHelper::map($clients, 'id', 'fullname'), ['prompt' => 'Please Select', 'class' => 'form-control']) ?>
        <?= Html::a('+ New Booking', ['booking/create/'], ['class' => 'btn btn-primary client-create']) ?>
    </p>

    <?=
    GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'id',
            ['label' => 'Client', 'value' => 'user.client.view', 'format' => 'raw'],
            'postCode',
            'start',
            'end',
            ['label' => 'Service Category', 'attribute' => 'category.name', 'filter' => ArrayHelper::map(Servicecategory::find()->where(['status' => true])->asArray()->all(), 'id', 'name')],
            //'numberOfDays',
            //'date',
            //'followUpEmail:email',
            // 'followUpEmailSent:ckeckbox',
            //'Status',
            ['attribute' => 'status', 'value' => 'Status', 'filter' => array_filter(\app\models\Booking::$statuses)],
            ['class' => 'yii\grid\CheckboxColumn',
                'header' => 'follow Up',
                'checkboxOptions' => function($model, $key, $index) {
                    $url = \yii\helpers\Url::to(['booking/followup/' . $model->id]);
                    return ['onclick' => 'js:followUp(this, "' . $url . '")', 'checked' => false, 'id' => 'followup'];
                }
            ],
            ['class' => 'yii\grid\ActionColumn',
                'headerOptions' => ['style' => 'width:15%'],
                'template' => '{view} {approval} {update} {delete} ',
                'buttons' => [
                    'view' => function ($url, $model) {
                        return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', ['/booking/review/' . $model->id], [
                                    'title' => Yii::t('app', 'Review'),
                        ]);
                    },
                    'approval' => function ($url, $model) {
                        return Html::a('<span class="glyphicon glyphicon-ok"></span>', ['/booking/approval/' . $model->id], [
                                    'title' => Yii::t('app', 'Additional Details'),
                                    'class' => 'error',
                        ]);
                    },
                ],
            ],
        ],
    ]);
    ?>
</div>
<?php
$script = <<< JS
    $('.client-create').on('click', function () {
        select = $(this).prev();
        if(select.val()){
            location.href = $(this).attr('href')+"/"+select.val();
        } else {
            $(this).parent().addClass('has-error');
        }
        return false;
    });
JS;
$this->registerJs($script);

$this->registerJs("
    function followUp(e, url){  

    $('#modal').modal('show').find('#modalContent').load(url);

    }", yii\web\View::POS_END);
?>

我可以将数据提供给gridview上的列,但过滤器无法正常工作。任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

我自己解决了。有关您的信息,请在此处发布。我在模型包含时更改了属性,并将值添加为category.name

['attribute' => 'categoryID', 'value' => 'category.name','filter' => ArrayHelper::map(Servicecategory::find()->where(['status' => true])->asArray()->all(), 'id', 'name')],