Ho una tabella con la colonna for_date
salvata dal tipo numero intero nel database. Al fine di mostrare for_date
con il formato DateTime, ho usato ActiveForm con il codice:Yii2 Converti da numero intero a datetime per visualizzare e salvare nel database con numero intero
<?= $form->field($model, 'for_date')->textInput([
'class' => 'form-control datepicker',
'value' => $model->for_date ? date(Yii::$app->params['dateFormat'], $model->for_date) : date(Yii::$app->params['dateFormat'], time()),
'placeholder' => 'Time'])
->label('Attendance Date') ?>
Ma quando creano e salvano, Yii informato This field must be integer
Nel file di modello, ho avuto 2 funzioni qui sotto per convertire prima di convalidare , ma è ancora un errore.
public function beforeValidate(){
if(!is_int($this->for_date)){
$this->for_date = strtotime($this->for_date);
$this->for_date = date('d/M/Y', $this->for_date);
}
return parent::beforeValidate();
}
public function afterFind(){
$this->for_date = \Yii::t('app', Yii::$app->formatter->asDate($this->for_date));
$this->for_date = date('d/M/Y', $this->for_date);
return parent::afterFind();
}
Come posso rendere corretto il salvataggio nel database con numero intero?
vorrei lasciarlo come 'int' nel modello e usare getter e setter. Il messaggio di errore che ottieni è molto probabile dalle impostazioni delle regole. Quindi potresti cambiare il tuo validatore lì. –
Sì, giusto. – Francis