【问题标题】:Yii filter not showing up in CGridViewYii 过滤器未显示在 CGridView 中
【发布时间】:2016-02-01 13:45:48
【问题描述】:

我在过滤 CGridView 时遇到问题。我在 studProg/view 中做这一切: 在这里,我基于另一个名为 kurs 的表/模型创建 CGridView,我得到了数据,一切正常。现在我希望能够从另一个表中获取键值并将它们列在我的 CGrid 的过滤器选项中。但是,下拉菜单不显示。为什么?

以下是我的代码的重要部分:

studProg/view CGridView 主体:

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'kursData',
'dataProvider'=>$kursDataProvider,
'columns'=>array(
    array(
        'header' => 'Studijska godina',
        'type' => 'raw',
        'filter' => $model->getStudijskeGodine(),
        'value' => '$data->stud_god_god'
    ),etc..

来自 StudProg 模型:

public function getStudijskeGodine()
{
    $query = 'select god from stud_god';
    $rezultat = Yii::app()->db->createCommand($query)->queryAll();
    $spisak = CHtml::listData($rezultat, 'god' , 'god');

    return $spisak;
}

【问题讨论】:

标签: php mysql yii


【解决方案1】:

首先在网格视图中配置filter。请记住,自定义过滤器始终适用于 name 属性。

        <?php
        $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'kursData',
        'dataProvider'=>$kursDataProvider,
        'filter'=>$model,    //Need this property to get the filter.
        'columns'=>array(
            array(
                'header' => 'Studijska godina',
                'name'=>'stud_god_god', //Need this filter
                'type' => 'raw',
                'filter' => $model->getStudijskeGodine(),
                'value' => '$data->stud_god_god'
            )

【讨论】:

  • 字段 stud_god_god 不是来自此模型。它来自我使用 dataProvider 获得的表。现在怎么办?这就是为什么我在您的代码中出现“名称”部分错误的原因。
【解决方案2】:

如果您涉及多个表,则需要在模型中配置它们之间的关系,以便在网格中使用它进行过滤。至少据我所知。

您可以在此处找到有关它的更多信息: declaring relationships in Yii

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 2014-02-18
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    相关资源
    最近更新 更多