Caccia all'errore

Sapete dirmi come mai questa pagina non funziona? O meglio: sapete dirmi come mai la ricerca ajax on viene eseguita? Se scrivo qualche cosa nei campi del datagrid, oppure nel piccolo form di ricerca, compare per un secondo la gif animata di caricamento ma non succede nulla.


<?php

  $this->renderPartial('_formdestinatario', array(

      'id' => $id

  ));

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

$('.search-button').click(function(){

	$('.search-form').toggle();

	return false;

});

$('.search-form form').submit(function(){

	$.fn.yiiGridView.update('events-grid', {

		data: $(this).serialize()

	});

	return false;

});

");

?><?php echo CHtml::link('ricerca avanzata', '#', array('class' => 'search-button')); ?>

<div class="search-form" style="display:none">

  <?php

    $this->renderPartial('_searchdestinatari', array(

        'model' => $model,

    ));

  ?>

</div><!-- search-form -->

<?php

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

      'id' => 'events-grid',

      'dataProvider' => new CActiveDataProvider('Destinatari', array(

          'criteria' => array(

              'condition' => 'idevento = ' . ($id),

          )

      )),

      'filter' => Destinatari::model(),

      'columns' => array(

          'email',

          'evento.description',

          array(

              'class' => 'CButtonColumn',

              'deleteButtonUrl' => 'Yii::app()->createUrl("/destinatari/delete", array("id" => $data->id))',

          ),

      ),

  ));

?>

E dove si effetua la search? Nell codice fatto da gii la search e effetuata nel model->search()…

Ok, questo me lo stavo dimenticando. Aggiungo carne al fuoco. Questo form e questo grid riguardano il model Destinatari. Mi trovo, però, in ?r=events/destinatari&id=30. Il mio obiettivo è quello di avere nel controller degli eventi, una pagina con il datagrid dei destinatari.

Secondo quello che mi hai detto, non funziona perchè usa il search di events.

La prima cosa che mi viene da pensare è che non ha senso mettere questo datagrid qui, e forse dovrei spostarlo nel controller giusto.

Ho messo dei log nei vari search ma ho scoperto che effettivamente non viene caricato il metodo search del model Destinatari. Da che cosa dipende?

Sai che ti dico? Che sposto quella roba e metto tutto dove deve stare. Non ho idea del perchè stessi tentando di fare quella cosa: ho già un datagrid che mostra tutti i destinatari che voglio. Devo solo aggiungerci il suo modulino e sono a posto. Boh. Mi sa che mi stavo complicando la vita per nulla.

Mah! Infatti in 3 minuti ho risolto i miei problemi. Però strano. Non stavo nemmeno facendo DDD. Il DDD è una tecnica di programmazione estrema: Drink Driven Development. Uno sviluppatore deve porre tra se ed il lavoro uno o due litri di birra. Dopodichè si può partire con il codice.

devi studiare un po il codice prodotto da Gii…

in pratica… quando chiami CGridView il dataprovider lo setti su $model->search()… che non e altro che un metodo che calcola la nuova CDbCriteria usando i dati entrati nell filter e ritorna il CActiveDataProvider…

nel tuo caso tu ci puoi mettere ‘dataprovider’=>$model->searchDestinatari()

Mi piace molto questo elemento!