Yii CGridView动态数据提供程序
是否有方法使用自定义“dataProvider”选项重新呈现包含CGridView的视图?例如,我有这样的视图文件Yii CGridView动态数据提供程序,yii,Yii,是否有方法使用自定义“dataProvider”选项重新呈现包含CGridView的视图?例如,我有这样的视图文件 <?php $this->widget('bootstrap.widgets.BootGridView',array( 'id'=>'operations-grid', 'type'=>'striped bordered', 'dataProvider'=>$model->search(), 'col
<?php $this->widget('bootstrap.widgets.BootGridView',array(
'id'=>'operations-grid',
'type'=>'striped bordered',
'dataProvider'=>$model->search(),
'columns'=>array(
array('name'=>'operationType','value'=>'$data->operationType->name'),
array(
'name'=>'creation_date','type'=>'datetime'
),
'ammount_usd:raw:Ammount',
'comment:text:Comment',
array(
'name'=>'currency',
'value'=>'$data->currency->short',
),
array(
'name'=>'client',
'value'=>'$data->client->fio'
),
array(
'name'=>'organization',
'value'=>'$data->organization->name'
),
array(
'class'=>'bootstrap.widgets.BootButtonColumn',
'header'=>'Action'
),
),
)); ?>
作为一个提供者,我有
$model->search()
,但我想举例来说,如果一个按钮按下了这个视图,它将通过ajax以不同的数据提供者重新呈现。有没有办法做到这一点?谢谢。数据提供者的重点是根据特定输入为您提供特定模型的适当数据。Search()做得很好,因为您只需要实例化一个具有要搜索的适当属性的模型类,数据提供程序将为您提供与该条件匹配的所有数据
如果您希望更改dataprovider的输出,则可以使用修改后的search()函数扩展模型类。如果您试图将一个完全不同的模型传递到数据提供程序中,我会为它设置一个不同的视图,因为它将有不同的列。数据提供程序的目的是根据特定输入为您提供特定模型的适当数据。Search()做得很好,因为您只需要实例化一个具有要搜索的适当属性的模型类,数据提供程序将为您提供与该条件匹配的所有数据
如果您希望更改dataprovider的输出,则可以使用修改后的search()函数扩展模型类。如果您试图将一个完全不同的模型传递到您的数据提供程序中,我会为它设置一个不同的视图,因为它无论如何都会有不同的列。您可以通过几种方式来实现这一点。
其中,您可以让控制器提供带有$dataProvider的视图,如下所示:
$this->widget('bootstrap.widgets.BootGridView',array(
'id'=>'operations-grid',
'type'=>'striped bordered',
'dataProvider'=>$dataProvider,
控制器可以根据该请求中的参数实例化所需的数据提供程序。然后,视图将这个数据提供程序传递给CGridView,完全忽略了它的精确类型
如前所述,您可以扩展CDATA提供程序(与CActiveDataProvider扩展的类相同)以完全定制它,只要它提供它所需的API。查看它的您可以通过多种方式来实现这一点。
其中,您可以让控制器提供带有$dataProvider的视图,如下所示:
$this->widget('bootstrap.widgets.BootGridView',array(
'id'=>'operations-grid',
'type'=>'striped bordered',
'dataProvider'=>$dataProvider,
控制器可以根据该请求中的参数实例化所需的数据提供程序。然后,视图将这个数据提供程序传递给CGridView,完全忽略了它的精确类型
如前所述,您可以扩展CDATA提供程序(与CActiveDataProvider扩展的类相同)以完全定制它,只要它提供它所需的API。查看它的这个关于动态的wiki应该给你很多想法。这个关于动态的wiki应该给你很多想法