igiuggiu
(Giuliano Ingrosso)
December 15, 2011, 2:41pm
1
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
markux
(Marco Patania)
December 16, 2011, 7:58am
2
crea nel model:
function getDatadinascita() {
return date("j-m-Y",strtotime($this->datadinascita));
}
ogni volta che richiamerai $model->datadinascita verrà utilizzato quel metodo.
igiuggiu
(Giuliano Ingrosso)
December 16, 2011, 8:53am
3
markux:
crea nel model:
function getDatadinascita() {
return date("j-m-Y",strtotime($this->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???
markux
(Marco Patania)
December 17, 2011, 9:54am
4
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
igiuggiu
(Giuliano Ingrosso)
December 20, 2011, 8:21am
5
markux:
crea nel model:
function getDatadinascita() {
return date("j-m-Y",strtotime($this->datadinascita));
}
ogni volta che richiamerai $model->datadinascita verrà utilizzato quel metodo.
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
sensorario
(Sensorario)
December 20, 2011, 2:40pm
6
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?
igiuggiu
(Giuliano Ingrosso)
December 21, 2011, 8:57pm
7
sensorario:
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