gpt4 book ai didi

CGridView 中的过滤器和 CActiveDataProvider

转载 作者:行者123 更新时间:2023-12-04 05:17:21 24 4
gpt4 key购买 nike

我在 Controller 的索引操作中有这些代码:

public function actionIndex()
{
$cid = @$_GET['cid'];
$country = Country::model()->findByPk($cid);

if($cid)
$dataProvider=new CActiveDataProvider('City', array(
'criteria'=>array(
'condition'=>'ci_co_id ='.$cid,
),
));
else
$dataProvider=new CActiveDataProvider('City');
$this->render('index',array(
'dataProvider'=>$dataProvider,
'country' => $country
));
}

这些在 view/index.php 文件中:
<?php 
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'city-grid',
'dataProvider'=>$dataProvider,
'filter' => $dataProvider,
'columns'=>array(
array(
'name' => ' ',
'value' => '$row + 1',
),
'ci_name',
'ci_pcode',
array(
'class'=>'CButtonColumn',
),
)
));

?>

但是 Yii 给了我这个错误:
CActiveDataProvider and its behaviors do not have a method or closure named "getValidators". 

问题是什么?

最佳答案

过滤器必须是扩展 CModel 的类。但是,您似乎没有进行任何实际过滤,因此您可以评论 filter你的 CGridView 行出来。

作为旁注,您的标准存在重大安全漏洞。您对 SQL 注入(inject)攻击敞开了大门。

按如下方式指定您的条件,以让数据库处理程序正确转义输入:

'criteria'=>array(
'condition'=>'ci_co_id =:cid',
'params'=>array(':cid'=>$cid),
),

关于CGridView 中的过滤器和 CActiveDataProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14093839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com