Bonjour,
Je débute Yii depuis quelques jours seulement et je tourne en ronde pour résoudre un problème de CGridView donc je peux vous dire qu’il y a beaucoup de questions là dessus, dont j’ai essayé les solutions proposées et ça fonctionne chez les autres, mais pas chez moi. Je me demande si la version y est pour qqch, 1.1.12.
J’ai des tables course et person. Chaque cours a une personne de contact.
J’ai peux sans problème lister le nom du contact dans le grid. Mais les filtres et les tris ne fonctionnent pas très bien sur l’en-tête des colonnes et ça ne retourne les errors :
Error 500: <h1>PHP Error [8]</h1>
<p>Trying to get property of non-object (/var/www/yii/framework/base/CComponent.php(607) : eval()'d code:1)</p>
<pre>#0 /var/www/yii/framework/base/CComponent.php(607) : eval()'d code(1): CWebApplication->handleError()
Je vous montre les codes essentiels :
Dans le fichier Model de Course.
public function rules()
{
return array(
//... d'autres array
array('contact, firstname, lastname', 'safe'),
array('contact, firstname, lastname', 'safe', 'on'=>'search'),
);
}
public function relations()
{
return array(
'contact' => array(self::BELONGS_TO, 'Person', 'id_contact'),
);
}
public function search()
{
$criteria=new CDbCriteria;
// ... d'autres criteria
$criteria->together = true ;
$criteria->compare('id',$this->id,true);
$criteria->with=array('contact');
$criteria->compare('contact',$this->contact,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
Et dans l’admin.php
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'course-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
//... d'autres attribues
array(
'name'=>'contact',
'value'=>'$data->contact->lastname' ,
),
array(
'class'=>'CButtonColumn',
),
),
));
Bien sûr, j’aimerais pourvoir faire un filtre et un tri avec tous les colonnes. Mais surtout, j’aimerais pourvoir faire un filtre avec “lastname” et “firstname” dans la même colonne. Pour les afficher dans la même colonne, je parviens à le faire, mais toujours avec les mêmes problèmes de filtre et de tri.
array(
'name'=>'contact',
'value'=>'$data->contact->lastname." ".$data->contact->firstname' ,
),
Merci d’avance pour votre aide.