data italiano

Ciao ragazzi,

ho un problema con le date, perchè sono salvate con anno-mese-giorno.

nei view ho risolto cosi:




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

	'id'=>'anagrafica-grid',

	'dataProvider'=>$model->search(),

	'filter'=>$model,

	'columns'=>array(

	        'id_anagrafica',

		'cognome',

		'nome',

    

        

        array(            // display 'create_time' using an expression

           'name'=>'datadinascita',

           'value'=>'date("j-m-Y",strtotime($data->datadinascita))',

 

          # 'value'=>'$data->datadinascita',

        ),

	array(

			'class'=>'CButtonColumn',

		),

	),

));



come faccio a risolvere nei view per la modifica ???

mi propone sempre date del tipo 1977-02-14

il codice è :





	<div class="row">

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

		<?php # echo $form->textField($model,DATE_FORMAT('datadinascita', ' %e-%m-%Y' )); ?>

		<?php  echo $form->textField($model,'datadinascita'); ?>

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

	</div>




come posso risolvere? vorrei vederla in formato gg-mm-anno.

grazie a tutti :rolleyes:

crea nel model:

function getDatadinascita() {

return date(&quot;j-m-Y&quot;,strtotime(&#036;this-&gt;datadinascita));

}

ogni volta che richiamerai $model->datadinascita verrà utilizzato quel metodo.

grazie mille avevo appena risolto in maniera un po’ grezza, ovvero inserendo la funzione direttamente nel view,




        array(         

           'name'=>'datadinascita',

          

           'value'=>'date("j-m-Y",strtotime($data->datadinascita))',

      

        ),



e funziona bene ma so che andrebbe messa nel model come hai detto tu, e cosi ho fatto.

ho aggiunto nel model la funzione:




	public  function getDatadinascita() {

		#return date("j-m-Y",strtotime($this->datadinascita));

		return date("j-m-Y",strtotime($this->datadinascita));

	}



ma richiamandola nel view ‘value’=>$model->getDatadinascita(), funziona ma mi visualizza solo l’anno e non tutta la data.

cosa puo’ essere???

scusa dimenticavo che dovresti fare l’override di __get per utilizzare il metodo implementato:


public function __get($name)

        {

                $getter='get'.$name;

                if(method_exists($this,$getter))

                        return $this->$getter();


                return parent::__get($name);

        }

nel tuo caso puoi utilizzare formatDateTime come suggeriscono http://www.yiiframework.com/forum/index.php?/topic/10261-format-of-datetime-format-using-textfield/page__p__50425__hl__view+date+format#entry50425

creando nel model la funzione getDatadinascita(), e richiamandola correttamente nel view con ‘value’=>$model->getDatadinascita(),

funziona correttamente.

non ho capito bene come potrei sfruttare l’override? inserendo




public function __get($name)

        {

                $getter='get'.$name;

                if(method_exists($this,$getter))

                        return $this->$getter();


                return parent::__get($name);

        }



mi da: Undefined property: Anagrafica::$datadinascita

spero che col tempo sarà chiaro.

grazie

Per come funziona Yii, quando richiami $this->qualcosa, viene cercata la presenza del metodo $this->getQualcosa(). Quindi se tu definisci il metodo getDatadinascita puoi gestire la lettura di questo valore. Lo stesso discorso vale per il metodo setQualcosa.

Per capire meglio questo meccanismo puoi fare due cose: leggere il coockbook (uno dei due libri di yii) oppure "aprire" la classe CComponent e controllare come è fatta. In particolare come sono fatti i magic methods di php __get e __set.

Per fare degli esercizi pratici potresti provare a creare piccoli componenti che estendano CComponent. Hai mai provato?

ti ringrazio infinite per la risposta e per i suggerimenti.

grazie grazie grazie