【问题标题】:Filters in CGridView not filteringCGridView 中的过滤器不过滤
【发布时间】:2015-05-01 12:17:02
【问题描述】:

你能检查一下为什么过滤在 CGridView 中不起作用吗?当我在过滤器字段中输入 exaple 'Adam' 时,什么也没有发生。我找不到我的错误,一切看起来都很好,但没有工作。我帮助写了那篇文章:Yii: CGridView Filter examples

控制器

 <?php
    class UzytkownikController extends CController
    {
        public function actionIndex()
        {
            $Dane = new Uzytkownik('search');
            $Dane -> unsetAttributes();  // clear any default values
            if(isset($_GET['Uzytkownik']))
            {
                $Dane->attributes=$_GET['Uzytkownik'];
            }
            $this -> render ('index', array(
                'Dane' => $Dane,
            ));
        }
    }
    ?>

型号

<?php
class Uzytkownik extends CActiveRecord
{
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    public function search()
    {
        $criteria = new CDbCriteria;
        $criteria -> compare('imie', $this -> imie, true);

        return new CActiveDataProvider($this, array(
                'criteria' => $criteria,
                )
        );
    }
}

?>

WIEV

<?php 
    $this -> widget('zii.widgets.grid.CGridView', array(
        'dataProvider' => $Dane -> search(),
        'filter' => $Dane,
        'columns' => array(
                array(
                    'name' => 'imie',
                    'type'=>'raw',
                ),
                array(
                    'name' => 'nazwisko',
                    'type'=>'raw',
                    'filter' => false,
                ),
                array(
                    'name' => 'data',
                    'filter' => false,
                ),
            ), 
        )
    );
?>

【问题讨论】:

  • 一切看起来都不错..你能把你输入“adam”并按回车时得到的输出贴出来吗?
  • 你的模型中不需要这个位吗? public function rules() { return array( array('imie', 'safe', 'on'=&gt;'search'), ); }
  • 当我按下回车键时没有任何反应。当我使用 $_POST** 而不是 **$_GET 时,它仍然无法正常工作。 var_dump($_POST['U​​zytkownik']) 在视图文件中给出 NULL
  • 现在使用 $_GET 并添加了@JelledeFries 代码。谢谢。
  • 不是用$_GET代替$_POST吗? - 编辑我看到你解决了,祝你好运。

标签: yii filter widget cgridview dataprovider


【解决方案1】:

供将来参考:

为了确保$model-&gt;attributes“保存”属性,model 需要添加以下内容:

public function rules() {
    return array(
      array('imie', 'safe', 'on'=>'search')
    );
}

并且应该使用$_GET 而不是$_POST 因为CGridView 小部件在发布到服务器时使用GET

class UzytkownikController extends CController
{
    public function actionIndex()
    {
        $Dane = new Uzytkownik('search');
        $Dane -> unsetAttributes();  // clear any default values
        if(isset($_GET['Uzytkownik']))
        {
            $Dane->attributes=$_GET['Uzytkownik'];
        }
        $this -> render ('index', array(
            'Dane' => $Dane,
        ));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-15
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多