Problema Renderizar Dos Vistas En Una View, Dos Dataproviders Distintos

Buenas, soy bastante newbie en Yii y he estado siguiendo el tutorial para crear un blog. Estoy tratando de mejorarlo con funciones que a mi parecer son necesarias. Una de ellas se trata de crear una sección de noticias destacadas en una vista renderizando primeramente las noticias destacadas para que queden por encima y después todas las noticias (destacadas y no destacadas). Para ello uso un solo modelo llamado Post (ambos cogen informacion de una tabla tbl_post) pero necesito dos $dataProvider’s diferentes debido a que en el $dataProviderDestacado marco un limite de items, quito la paginación y en general digamos que modifico algo la variable $criteria.

Las dos vistas se renderizan pero parece que se rompe algo de código y no se me codifica como debería dando problemas con los accentos a parte de que mi sección "destacados" no segue el mismo layout que las notícias.

Esta es la acción de mi actionIndex() (donde quiero mostrar destacados y las noticias):




	$criteriaPost=new CDbCriteria(array(

        'condition'=>'status='.Post::STATUS_PUBLICADO,

        'order'=>'update_time DESC',

        'with'=>'commentCount',

    	));

	    if(isset($_GET['tag']))

	        $criteria->addSearchCondition('tags',$_GET['tag']);

	 

	    $dataProviderPost=new CActiveDataProvider('Post', array(

	        'pagination'=>array(

	            'pageSize'=>5,

	        ),

	        'criteria'=>$criteriaPost,

	    ));


	    $criteriaDestacados=new CDbCriteria(array(

        'condition'=>'status='.Post::STATUS_PUBLICADO,

        'order'=>'update_time DESC',

        'with'=>'commentCount',

        'offset' => 0,

        'limit'=>6,


    	));

	    if(isset($_GET['tag']))

	        $criteria->addSearchCondition('tags',$_GET['tag']);

	 

	    $dataProviderDestacados=new CActiveDataProvider('Post', array(

	    	'pagination' => false,


	        'criteria'=>$criteriaDestacados,

	    ));


	  	$this->pageTitle = "SVGA - Noticias"; // It could be something from DB or...whatever

	   $this->renderPartial('destacados',array(

	   	'dataProvider1'=>$dataProviderDestacados,

	   	));

	   $this->render('index',array(

        'dataProvider2'=>$dataProviderPost,

    	));

	}



El index.php:


<?php $this->widget('zii.widgets.CListView', array(

	'dataProvider'=>$dataProvider2,

	'itemView'=>'_view',

	'sortableAttributes'=>array(

          'title',

          'create_time'=>'Fecha',

      ),

));

?>

Y el destacado.php:


<?php $this->widget('zii.widgets.CListView', array(

	'dataProvider'=>$dataProvider1,

	'summaryText'=>'', 

	'itemView'=>'_destacadosview',

));

?>

Espero que me podáis ayudar, gracias!

Buenas.

Tampoco es que sea muy experto en Yii, pero creo q lo de renderizar 2 vistas…va a ser q no.

En mi opinión lo q tendrías que hacer es lo siguiente:

  • En el actionIndex creas tus 2 dataProviders.

  • Llamas a la vista "index" pasándoles los 2 dataproviders.

  • Muestras los 2 "CListView".

Te has complicado las cosas sin tener pq, ya q en mi opinión sólo necesitas 1 vista.

O si quieres tener las 2 vistas pq la de "destacados" la vas a utilizar por separado haces lo siguiente:

  • En el actionIndex creas tus 2 dataProviders.

  • Llamas a la vista "index" pasándole los 2 dataProviders.

  • Dentro de la vista "index" cargas tu dataProvider de "no destacadas" y haces un renderPartial de tu vista "destacados" pasándole el dataProvider de destacados.

  • En tu vista "destacados" cargas el dataProvider de "destacados".

Y listo.

Un saludo.