php - Comment un champ dans ActiveForm dans YII2 peut-il afficher l'heure au lieu de l'horodatage ?
漂亮男人
漂亮男人 2017-05-16 12:57:56
0
1
537

<?= $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 ?

漂亮男人
漂亮男人

répondre à tous(1)
刘奇
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);
    }
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal