Yii Framework Forum: Problema Renderizar Dos Vistas En Una View, Dos Dataproviders Distintos - Yii Framework Forum

Jump to content

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

Problema Renderizar Dos Vistas En Una View, Dos Dataproviders Distintos Rate Topic: -----

#1 User is offline   xexulongo 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 19-July 13

Posted 19 September 2013 - 05:51 PM

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!
0

#2 User is offline   lagogz 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 30-November 12
  • Location:Galiza

Posted 23 September 2013 - 11:37 AM

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.
-----------------------------------------------------------------------------------------------
------------------------------- VISITEN FOCUCHASART --------------------------------
-----------------------------------------------------------------------------------------------
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