Recharger Un Widget "maison"

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.

As-tu essayer d’ajouter un évènement sur clique ?

Lorsque tu saisi le formulaire de recherche il recharge la div contenant ton _chart.php via une action du controlleur

en complément de CO-k-ine

…je crois que tu n’envoies pas le résultat de ta recherche dans le _chart.php mais seulement le $model…

essaye le code suivant

<?php

$this->renderPartial(’_chart’,array(

    'id' =&gt; 'chart',


    'model'=&gt;[b]&#036;model-&gt;search()[/b],

));

j’espère avoir vu juste… :rolleyes: