Datepicker: Formato Della Data


(Tunello) #1

Ciao ragazzi,

premetto che non ho grossi problemi nell’usare il DatePicker etc etc.

cmq vado al dunque,

in un form di update ho la necessità di "mostrare" la data che p contenuta dentro un input field nel formato "6/11/2012".

ora il datepicker funziona bene, lo fà, il mio problema è che essendo proprio in una scheramata di modifica ho delle date

inserite precedentemente nll’insert, quindi ho la STRINGa “2012/11/6” che si stampa nel value dell’input field dedicato.

ecco l’input field in esame a cui è assocaito il widget:




       $this->widget('zii.widgets.jui.CJuiDatePicker', 

				array(	'model'=>$model,

						'attribute'=>'data_finefase',

						'value'=>Yii::app()->format->date(strtotime($model->data_finefase)),

						'language'=>'it' ));



come potete vedere ho provato a intercettare il "value" dicendogli di valorizzarmelo col dato presente sul model e FORMATTATO, ma niente.

come posso fare?

Come è possibile a un input field del genere, assegnare al dato proveniente dal model il formato della data desiedrato e non quello del DB?

Grazie! :D


(Tunello) #2

PS. e poi se nell’opzione “value” mettessi “pippo” non dovrebbe scrivermi pippo?


(Mariodipatria) #3




protected function afterFind() {

        //cod per convertire la data in formato d-m-Y


        parent::afterFind();

    }


 


    protected function beforeSave() {

       //riconverti la data per darla in pasto al db Y-d-m


        return parent::beforeSave();

    }




(Tunello) #4

Grazie Hyde82.

Di seguito scrivo la mia "soluzione", proprio usando afterFind !


	/**

	 * @see CActiveRecord::afterFind()

	 */

	public function afterFind(){

		

		$this->manageDateFormat();

	}

	

	

	

	/**

	 * Funzione che gestisce il formato delle date di tutta l'applicazione

	 */

	private function manageDateFormat(){

		

		foreach ($this->attributes as $campo=>$val){

			$dbType = $this->isDateTimeColumn($campo);

			if( $dbType ){

				

				if( preg_match('/[\/]+/',$val) ){

					//*** mi assicuro che le date ereditate di tipo '2012/11/06'

					//*** vengano convertite nel formato standard 'Y-m-d'

					$dtt = DateTime::createFromFormat('d/m/Y', $val);

					$val = $dtt->format('Y-m-d');

				}

				

				$time = strtotime($val);

				$valore_formattato = ($time)?Yii::app()->format->$dbType($time):null;

				$this->setAttribute($campo, $valore_formattato);

			}

		}		

	}

Ciao.

;)


(Mariodipatria) #5

ricorda che prima di salvare i dati devi riconvertire la data…


(Tunello) #6

Essì, di fatti prima di salvare nel “BeforeSave” riconverto le date, per evitare i “000-00-00 00:00:00” ;)

Grazie.


(Riccardo Regini) #7

Ciao Ragazzi,

Sono alle prime armi con questo framwork, è sto cercando di utilizzare il datapicker per far selezionare all’utente una data ho inserito nel codice del form.php il seguente codice

[font=“Verdana”][size=“2”]<?php echo $form->labelEx($model,‘DtPublicazionePortale’); ?>

	&lt;?php 


		&#036;this-&gt;widget(


				'ext.jui.EJuiDateTimePicker',


				array(


					'model'     =&gt; &#036;model,


					'attribute' =&gt; 'DtPublicazionePortale',


					'language'	=&gt; 'it',


					'mode'    	=&gt; 'datetime',


					'options'   =&gt; array(


						'dateFormat' =&gt; 'dd.mm.yy',


						'timeFormat' =&gt; 'hh:mm',


					),


				)


			);		


		?&gt;


	&lt;?php echo &#036;form-&gt;error(&#036;model,'DtPublicazionePortale'); ?&gt;


&lt;/div&gt;[/size]

[/font]

invio il submit ma continuo ad non ricevere il valore selezionato nel form

nel model ho lasciato tutto come mi ha generato in automatico l’operazione di CRUD non riesco a capire cosa e dove devo inserire il codice per recuperare il valore della data.

grazie mille


(Tunello) #8

Ciao Ricky, premetto che ancora no ho mai usato l’estenzione che stai usando te,

ma per "continuo a non ricevere il valore selezionato" intendi che non ricevi nulla oppure ricevi un valore "sballato"?

ps.hai provato a var_dump-are il $_POST?