首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGridView中的filter和CActiveDataProvider

CGridView中的filter和CActiveDataProvider
EN

Stack Overflow用户
提问于 2012-12-31 03:23:00
回答 1查看 4.6K关注 0票数 2

我在控制器的索引操作中有以下代码:

代码语言:javascript
复制
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文件中:

代码语言:javascript
复制
<?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给了我这个错误:

代码语言:javascript
复制
CActiveDataProvider and its behaviors do not have a method or closure named "getValidators". 

有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2012-12-31 06:09:38

筛选器必须是扩展CModel的类。但是,您似乎并没有进行任何实际的过滤,所以您可以只注释掉CGridView的filter行。

顺便说一句,你的标准中有很大的安全漏洞。您使自己很容易受到SQL注入攻击。

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

代码语言:javascript
复制
'criteria'=>array(
  'condition'=>'ci_co_id =:cid',
  'params'=>array(':cid'=>$cid),
),
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14093839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档