Comment Transformer Les Rows D'une Clistview En Liens

Bonjour tous le monde,

je suis nouveau dans l’univers de yii, mais j’adore deja.

dans mon modèle généré j’ai la liste des utilisateurs user/index.php

par contre j’aimerai transformer cette CListView pour que quand un utilisateur clique dessus on se retrouve sur la vue de l’utilisateur concerné.

Pour l’instant voici mon ébauche de code




<?php

Yii::app()->clientScript->registerScript('search', "

$('.view').click(function(){

    location.href = "location.href = \"' . $this->createUrl('view').'/id/"+$.fn.yiiListView.getSelection(id);

    return false;

});

");

?>


<h1>Users</h1>


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

	'dataProvider'=>$dataProvider,

	'itemView'=>'_view',

        'updateSelector'=>'search',

        'itemsCssClass' => 'userList',

    'sortableAttributes'=>array(

        'ccid',

        'username',

        'admin',

    ),



Est-ce bien dans ce sens ?

Pour l’instant je n’arrive pas à récupérer l’id et je n’arrive pas à créer le lien correctement

Merci de m’aider

Je pense qu’il vaut mieux générer le lien dans “_view”. Pour les informations passée à la vue partielle, tu peux te référer à:

itemView

Au fait non je ne veux pas avoir un lien cliquable dans _view, je voudrais que je puisse cliquer les éléments dans mon ListView.

Là, il va falloir que tu sois plus explicite, car je ne comprends pas trop la nuance…

Une capture d’écran peut-être?

Ben prenons un exemple tout simple avec la GridView


<?php

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

    'id' => 'traveler-grid',

    'dataProvider' => $model->search(),

    'filter' => $model,

    'selectableRows' => 1,

    'selectionChanged' => 'function(id){ location.href = "' . $this->createUrl('view') . '/id/"+$.fn.yiiGridView.getSelection(id);}',

    'columns' => array(

        'title',

        array(

            'name' => 'userId',

            'filter' => CHtml::listData(User::model()->findAll(), 'id', 'username'),

            'value' => 'User::Model()->FindByPk($data->userId)->username',

        ),

        'createTime',

        'updateTime',

        'revision',

        array(

            'name' => 'status',

            'filter' => CHtml::activeDropDownList($model, 'status', $model->statusOptions),

            'value' => '$data->getStatusText()',

        ),

        array(

            'class' => 'CButtonColumn',

            'visible' => Yii::app()->user->getState("admin") == 1,

        ),

    ),

));

?>

le fait de cliquer sur une rows ça me redirige directement sur la vue ;) grâce à ces deux lignes de code


'selectableRows' => 1,

    'selectionChanged' => 'function(id){ location.href = "' . $this->createUrl('view') . '/id/"+$.fn.yiiGridView.getSelection(id);}', 

par contre je n’ai rien trouvé de similaire avec une simple ListView

en général l’accès aux id dans les _view Yii associées à des ClistView se fait à partir de la variable

$data->id

à partir de la tu devrais pouvoir l’exploiter comme bon te semble…

exemple :

génération de la ClistView (comme d’hab)


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

        'dataProvider'=>$dataProvider,

        'itemView'=>'_view',

...

obtention simple du lien vers la vue détaillée à partir de l’id dans la _view


<?php echo CHtml::link("lienversmavuedetaillee",array("maTable/mavuedetaillee","id"=>$data->id)); ?>

en espérant avoir compris ta question… ::)