Bonjour,
J’ai un léger souci avec un widget que je suis en train de faire.
Actuellement, j’ai une page qui contient un moteur de recherche, un CGridView et une image générée à la volée par mon widget.
Le moteur de recherche rafraichit en ajax le CGridView, jusque là tout est bon. Par contre, je n’arrive pas à voir comment modifier mon widget pour qu’il puisse aussi être rafraichi.
Dans la vue principale, j’ai:
<?php
Yii::app()->clientScript->registerScript('search', "
$('.search-button').click(function(){
$('.search-form').toggle();
return false;
});
$('.search-form form').submit(function(){
$('#vol-transfert-grid').yiiGridView('update', {
data: $(this).serialize()
});
return false;
});
");
?>
<!-- search form -->
<div class="search-form" style="display: block; float: left;">
<?php $this->renderPartial('_searchvolume',array(
'model'=>$model,
)); ?>
</div>
<div class="clear"></div>
<?php echo CHtml::link('Recherche on/off','#',array('class'=>'search-button')); ?>
<!-- search-form -->
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'vol-transfert-grid',
'dataProvider'=>$model->search(),
//'filter'=>$model,
'columns'=>array(
'DateModif',
'volok',
'volko',
array(
'name' => 'weight',
'value' => 'StringUtilities::humanReadable($data->weight)',
),
),
)); ?>
<?php
$this->renderPartial('_chart',array(
'id' => 'chart',
'model'=>$model,
));
?>
la vue _chart.php contient uniquement l’appel au widget (CPchartWidget) , qui n’a en fait que 2 fonctions: init() et run() (qui fait un echo du code html permettant d’afficher l’image générée).
Donc, je dois ajouter l’équivalent de
$('#vol-transfert-grid').yiiGridView('update', {
data: $(this).serialize()
});
pour mon widget, mais je ne vois pas trop comment.
Est-ce que je suis obligé d’ajouter une action dans mon contrôleur, ou bien y’a t’il un moyen de recharger le widget en lui passant le modèle mis à jour (donc avec les nouveaux paramètres de recherche) ?
Merci d’avance.