Yii Framework Forum: Filtrar Dataprovider Para Cgridview - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Filtrar Dataprovider Para Cgridview Rate Topic: -----

#1 User is offline   JulianManifesto 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 01-February 13

Posted 01 February 2013 - 09:30 AM

Hola a todos! Tengo una duda...

Con el CRUD genere un par de modelos, lo que necesito es filtrar el primer contenido que le mando al CGridView.
Lei por todos lados pero no encontre lo que ando buscando, a ver si alguien me puede ayudar :D

De esta forma, poniendole un valor al atributo, logre solucionarlo por el momento.

public function actionIndex($tipo) {

        $model = new Contenidos('search');
        $model->unsetAttributes();
        $model->tipos_id_tipos = $tipo;


        if (isset($_GET['Contenidos']))
            $model->attributes = $_GET['Contenidos'];

        $this->render('admin', array(
            'model' => $model,
            'tipo' => $tipo,
        ));
    }


Pero tiene que haber una mejor forma de hacer esto, porque si yo necesito preguntar por ejemplo si $tipo es mayor que 2, o si $tipo esta entre 3 y 5, etc... No voy a poder.

Intente miles de formas.. Hice algo como:

En el controlador:
        $model = new Contenidos('search');
        $model->unsetAttributes();
        $dataProvider = Contenidos::model()->findAll("tipos_id_tipos = $tipo");


Y despues en la vista:
$this->widget('zii.widgets.grid.CGridView', array(
                    'id' => 'contenidos-grid',
                    'dataProvider' => $dataProvider,


Pero me tira un error de que $dataProvider no es un objeto..

Alguien tiene alguna idea? Me lei un monton de tutoriales y en ninguno encontre lo que busco.
Espero haber sido claro con mi duda.

Cualquier duda pregunten!
0

#2 User is offline   Juan Carrera 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 05-October 12
  • Location:Zaragoza (Spain)

Posted 04 February 2013 - 02:55 AM

View PostJulianManifesto, on 01 February 2013 - 09:30 AM, said:



Intente miles de formas.. Hice algo como:

En el controlador:
        $model = new Contenidos('search');
        $model->unsetAttributes();
        $dataProvider = Contenidos::model()->findAll("tipos_id_tipos = $tipo");


Y despues en la vista:
$this->widget('zii.widgets.grid.CGridView', array(
                    'id' => 'contenidos-grid',
                    'dataProvider' => $dataProvider,


Pero me tira un error de que $dataProvider no es un objeto..



Hola, FindAll() te devuelve un array de objetos, no un CActiveDataProvider, que es lo que necesita CGridView.

En el controlador puedes instanciar un CActiveDataProvider con algo así:

$dataProvider=new CActiveDataProvider('Contenidos', array(
    'criteria'=>array(
        'condition'=>'tipos_id_tipos = :tipo',
        'params'=>array(':tipo'=>$tipo),
    ),
    'pagination'=>array(
        'pageSize'=>20,
    ),
));


Tienes una explicación bastante buena del CActiveDataProvider en http://www.yiiframew...vedataprovider/

Espero que te sirva.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users