Cambiare link a CListView

Salve ragazzi, ho un problema con il widget CListView ovvero :

inserisco il widget nella view A dandogli come dataProvider un model B e quindi punto la propietà itemView alla _view di B ovvero:


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

            'dataProvider'=>new CActiveDataProvider(Clienti::model(),array(

                'criteria'=>$criteriacat,

            )),

            'itemView'=>'../clienti/_view',

    ));

fin qui tutto bene mi recupera correttamente i valori di B ovvero clienti, il problema sta nel fatto che quando vado a cliccare sul’id mi da errore





Error 404

The requested page does not exist.



e controllando l’url lui scrive http://localhost/nomeprogetto/A/view?id=2 quindi l’errore sta nel fatto che non richiama la view corretta ovvero la B.

Come posso cambiare il link o meglio cosa sbaglio?

Non devi cambiare il link, ma il percorso del template. In genere si mette solo il nome del template ‘_view’ e questo viene pescato dalla cartella che ha il nome del controller. Prova con ‘/clienti/_view’. Lo slash iniziale, dovrebbe dire ad Yii che deve partire dalla cartella protected/views e non dalla cartella protected/views/CONTROLLER.

ho provato ad inserire sia:


'template'=>'/clienti/view',

che


'template'=>'../clienti/view',

ma m scrive nella pagina /clienti/view nel primo caso e questo ../clienti/view nel secondo caso

Due cose: la pagina dovrebbe essere /clienti/_view (con l’underscore). Secondo, … non capisco che cosa intendi con “mi scrive nella pagina”.

allora ti illustro quello che ho scritto:




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

            'dataProvider'=>new CActiveDataProvider(Clienti::model(),array(

                'criteria'=>$criteriacat,

            )),

            'itemView'=>'/clienti/_view',

            'template'=>'/clienti/_view', 

    ));



visualizza nel browser al posto del div mi visualizza la stringa /clienti/_view

ho risolto allora:


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

            'dataProvider'=>new CActiveDataProvider(Clienti::model(),array(

                'criteria'=>$criteriacat,

            )),

            'itemView'=>'/clienti/_view',

    ));

bisogna lavorare sul file /clienti/_view ovvero cambiare questo:


<b><?php echo CHtml::encode($data->getAttributeLabel('id_cliente')); ?>:</b>

	<?php echo CHtml::link(CHtml::encode($data->id_cliente), array('view', 'id'=>$data->id_cliente)); ?>

	<br />

in


<b><?php echo CHtml::encode($data->getAttributeLabel('id_cliente')); ?>:</b>

	<?php echo CHtml::link(CHtml::encode($data->id_cliente), array('/clienti/view', 'id'=>$data->id_cliente)); ?>

	<br />

grazie a tutti