在yii中显示过滤表

时间:2012-10-04 23:59:39

标签: php yii

这可能是一个愚蠢的问题,但我在yii中有点新,并且对这个简单的视图有问题。 我有这样的数据:

task_type

id  name
1   agenda
2   task
3   notes

议程:

id  user    due_at  created_at  task_type_id    description

我想将它们作为议程和任务单独显示,并在不同的html视图中注释如下:

任务

due_at  description

议程

due_at  created_at  description

注释

description

我不希望任何花哨的用户过滤,因为这些表只显示当前一周的首页最多一周,并且将有专门用于此类任务的单独页面。这只是作为快速任务的首页。我一直在尝试CGridView但不能过滤它而不让html过滤器出现。我需要在due_at中进行过滤,并在目标范围内过滤due_at,然后按用户进行过滤。

有人可以帮我创建吗?

提前谢谢

1 个答案:

答案 0 :(得分:1)

如果您想使用CGridView,则需要注意一些事项,并且它们如下:

  1. 使用DataProvider :CGridView需要数据提供程序作为其输入。 data provider是:

      

    数据提供程序是可以为小部件(如数据网格,数据列表)提供数据的组件。除了提供数据外,它们还支持分页和排序。

    根据您当前的要求,您可以使用CActiveDataProvider。所以你的gridview代码需要这个:

    $this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider'=>$dataProvider,
    ));
    

    将此数据提供程序从控制器操作传递到视图。

  2. 使用条件:您可以在condition CActiveDataProvider属性中传递所有这些$dataProvider。该标准是criteria的对象。所以你的$dataProvider=new CActiveDataProvider('Agenda',array( 'criteria'=>array( 'condition'=>'task_type_id=1 AND due_at BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 WEEK)', 'select'=>'due_at, description' // columns you want to select ) )); 可以是:

    condition

    select属性是:

      

    查询条件。这是指SQL语句中的WHERE子句。例如,年龄> 31 AND team = 1。

    filter属性为:

      

    正在选择的列。这是指SQL语句中的SELECT子句。该属性可以是字符串(以逗号分隔的列名称)或列名称数组。默认为'*',表示所有列。

  3. 不指定过滤器:要不显示过滤器,请不要将任何$this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>$dataProvider, //'filter'=>$model // don't pass any filter )); 属性值传递给网格:

    $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'agenda-grid',
        'dataProvider'=>$dataProvider,
        'columns'=>array(
            'due_at',
            'description'
        )
    ));
    
  4. 使用列:使用CDbCriteria仅显示您要显示的特定列:

    id

    同时传递id,该div将成为此网格{{1}}的{​​{1}},如果您不想要自动生成的ID。

  5. 就是这样,你应该按照上述步骤得到你想要的东西。