recherche

Maison  >  Questions et réponses  >  le corps du texte

php - Comment un champ dans ActiveForm dans YII2 peut-il afficher l'heure au lieu de l'horodatage ?

<?= $form->field($model, 'time')->textInput() ?>

Question 1 :
Mon heure est un horodatage dans la base de données. Ce que je veux afficher maintenant, c'est l'heure. Comment la gérer ?

Question 2 :
Je remplis une chaîne telle que 2017-05-13 dans ce formulaire de date. Quelle méthode peut-on écrire dans le modèle pour la convertir automatiquement en horodatage ?

漂亮男人漂亮男人2757 Il y a quelques jours539

répondre à tous(1)je répondrai

  • 怪我咯

    怪我咯2017-05-16 12:59:56

    class XXX extends \yii\db\ActiveRecord
    {
        public function rules()
        {
            return [
            
                ...other rules...
                
                ['time', function($attr, $params) {
                    if ($this->hasErrors()) return false;
    
                    $datetime = $this->{$attr};
                    
                    $time = strtotime($datetime);
                    // 验证时间格式是否正确
                    if ($time === false) {
                        $this->addError($attr, '时间格式错误.');
                        return false;
                    }
                    // 将转换为时间戳后的时间赋值给time属性
                    $this->{$attr} = $time;
                    return true;
                }],
            ];
        }
    
        ...others...
        
        /**
         * 从数据库中 find() 数据后将 time 格式化。
         */
        public function afterFind()
        {
            parent::afterFind();
            $this->time = date('Y-m-d', $this->time);
        }

    répondre
    0
  • Annulerrépondre