[Risolto]Problema Nel Recuperare Il Value Di Widget Nel Model

Salve ragazzi altro problema con questo form maledetto… ho utilizzato questo widget per la combobox ovvero: EJuiComboBox

Il problema sta nel fatto che quando vado a salvare non recupera il valore selezionato risulta vuoto, la stessa cosa vale per il widget del calendario ovvero: gcalendar.GCalendar

Sicuramente se l’input è ha un attributo name “arriva” all’altra pagina tramite get o post. Detto questo, ci sono dei widget come EJuiComboBox che possono essere una sandbox che ci nascondono quello che c’è sotto. Ma non dobbiamo spaventarci pensando che un form sia maledetto =). Dando per scontato che esista questo campo di input (generato dall’EJuiComboBox), probabilmente non viene recuperato il valore perché viene letto male. Prova ad eseguire questo codice nella pagina che riceve i dati.


var_dump($_POST);die;

Poi postacelo qui. In questo modo potremo accertarci che tutto viene spedito correttamente alla pagina. Se qui non trovi il dato del EJuiComboBox allora proveremo ad andare più a fondo per verificare l’HTML generato dal widget.

Grazie mille sensorio…

Allore l’array che stampa è questo


array (size=5)

  'N_pratica' => string '008' (length=3)

  'anno' => string '2012' (length=4)

  'del' => string '07-10-2012' (length=10)

  'collocazione' => string 'AQ' (length=2)

  'Firmana' => string 'wweqeqwe' (length=<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='8)' />

ed il form è questo:




<div class="row">

		<?php echo $form->labelEx($model,'N_Pratica'); ?>

		<?php echo $form->textField($model,'N_pratica',array('size'=>3,'maxlength'=>3,'value'=>$this->creaNPratica())); ?>

		<?php echo $form->error($model,'N_pratica'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'anno'); ?>

		<?php echo $form->textField($model,'anno',array('value'=>date('Y',time()),'onkeyup'=>'

                                                                if(jQuery(this).val().length==4){                                                                    

                                                                jQuery.ajax({

                                                                             type: "POST",

                                                                             url:"Calcolo_collocazione_ajax",

                                                                             data:{data:jQuery(this).val()}                        

                                                                           }).success(function( data ) {jQuery("#PrefixarchivioPratiche_collocazione").val( data ); })

                                                                }else{

                                                                         jQuery("#PrefixarchivioPratiche_collocazione").val("");

                                                                }')); ?>

		<?php echo $form->error($model,'anno'); ?>

         

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'del'); ?>

		<?php echo $form->textField($model,'del',array('id'=>'effective_from','readonly'=>'readonly','value'=>date('d-m-Y',time()))); ?>

                        <?php 

                                   $this->widget('ext.gcalendar.GCalendar',array(

                                   'model' =>$model,

                                   'theme' => '',

                                   'inputField'=>'effective_from', 

                                   'daFormat'=>'dd-mm-yyyy',

                                   'languageCode' => 'en',    

                               )

                     ); 

                ?>    

		<?php echo $form->error($model,'del'); ?>

	</div>

        

        <div class="row">

		<?php echo $form->labelEx($model,'collocazione'); ?>

		<?php echo $form->textField($model,'collocazione',array('size'=>50,'maxlength'=>50,'value'=>$this->calcolo_collocazione_php(date('Y',time())))); ?>

		<?php echo $form->error($model,'collocazione'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'Firmana'); ?>

		<?php echo $form->textField($model,'Firmana',array('size'=>50,'maxlength'=>50)); ?>

		<?php echo $form->error($model,'Firmana'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'nome'); ?>		

               <?php $form->widget('ext.combobox.EJuiComboBox', array(

                     'model' => $model_seu,

                     'attribute' => 'nome',

                     // data to populate the select. Must be an array.

                     'data' => PrefixfirmanaSeuController::Seu(),

                     // options passed to plugin

                     'options' => array(

                        // JS code to execute on 'select' event, the selected item is

                        // available through the 'item' variable.

                        'onSelect' => '',

                        // JS code to be executed on 'change' event, the input is available

                        // through the '$(this)' variable.

                        'onChange' => 'if(confirm("Aggiungere elemento alla lista?")){

                                          jQuery.ajax({

                                                       type: "GET",

                                                       url:"'.Yii::app()->baseUrl.'/PrefixfirmanaSeu/create",

                                                       data:{nome:jQuery(this).val()}                        

                                         }).success(function( data ) {alert(data);})

                                       }',

                        // If false, field value must be present in the select.

                        // Defaults to true.

                        //'allowText' => TRUE,

                         'allowText' => FALSE,

                    ),

                    // Options passed to the text input

                    //'htmlOptions' => array('size' => 10),

                ));

               ?>

            <?php echo $form->error($model,'nome'); ?>

	</div>



Il problema della data sarà sicuramente un problema di tipo di ritorno perchè il tipo di dato del db è un datetime, voi che ne dite?

Ma resta ancora il problema del ritorno del valore del campo nome

Perche’ usi un altro model per raccogliere il nome? Dovresti usare lo stesso

a me serve quello, purtroppo il mio che sto usando e di tipo myisam(non per causa mia)

Allora anche per il model SEU devi assegnare gli input ($model_seu->attribute=$_POST…), validare e salvare.

il problema e che nel post non passa il valore Seu… manca

Se c’e’ la textbox ci deve essere anche il valore, controlla il post e se il widget crea un hiddenField.

Sei sicuro che non ti sei dimenticato una textbox in piu’ che ti sovrascrive il valore scelto dal widget?

niente sono stato ad impazzire fino ad ora ma niente :angry: :angry: :angry: :angry: :angry:

non crea niente

Quasi risolto il mistero allora ho trovato la variabili incriminate e facendo il var dump ritona string(16) il problema passa alla validazione ovvero al validator risulta vuoto e quindi non mi fa andare avanti… Dai dai siamo sulla buona strada :D

Devi avere un validatore sul valore che prendi, se non hai nessuna regola da validare usa safe, significa che l’attributo e’ sicuro e puo’ essere assegnato.

risolto non applicavo nessun controllo nelle rules :D