Подтвердить что ты не робот

Yii Framework 2.0 Правила Дата Validator

Я использую Yii Framework 2.0. У меня есть форма с текстовым полем ввода, предназначенным для даты. Я прочитал Yii Framework 2.0 о классе yii\validators\Validator и знал все ключи проверки, которые могут использоваться внутри метода rules() в классе модели, Когда я использую ключ date, как показано ниже, он ничего не подтверждает. Это означает, что я все еще могу поместить некоторый текст в это поле ввода и могу опубликовать форму.

Когда я изменил его на логический или адрес электронной почты, я понял, что он очень хорошо проверяется, когда я помещаю что-то неправильно в поле ввода. Как я могу проверить значение даты внутри поля ввода с помощью Yii Framework 2.0?

Мой метод rules():

public function rules()
{
    return [
         [['inputfield_date'], 'required'],
         [['inputfield_date'], 'safe'],
         [['inputfield_date'], 'date'],
    ];
}

Моя страница просмотра:

<?php $form = ActiveForm::begin(); ?>
     <?= $form->field($model, 'inputfield_date')->textInput(); ?>
<?php ActiveForm::end(); ?>
4b9b3361

Ответ 1

Мальчик Yii docs сосать. Они даже не приводят пример. Работая с O'Connor, это сработало для меня, так как я присваивал значение в формате 2015-09-11.

// Rule
[['event_date'], 'date', 'format' => 'php:Y-m-d']
// Assignment
$agkn->event_date = date('Y-m-d');

docs даже не указывают, откуда пришли format или timestampAttribute, или как их использовать. Он даже не говорит, что такое черты from_date и to_date. И больше всего примеров нет!

Ответ 2

Рабочее решение. Мой метод rules():

public function rules()
{
   return [
     [['inputfield_date'], 'required'],
     [['inputfield_date'], 'safe'],
     ['inputfield_date', 'date', 'format' => 'yyyy-M-d H:m:s'],
   ];
}

Моя форма на странице просмотра:

<?php $form = ActiveForm::begin(); ?>
   <?= $form->field($model, 'inputfield_date')->textInput(); ?>
<?php ActiveForm::end(); ?>

Мой метод в контроллере:

if ($model->load(Yii::$app->request->post()) && $model->validate()):
        if($model->save()):
            // some other code here.....
        endif;
endif;

Обратите внимание, что формат даты зависит от того, как вы определяете поле ввода формата даты. Еще раз обратите внимание, что это не валидатор AJAX. После нажатия кнопки "Отправить" вы увидите сообщение об ошибке, если вы введете что-то еще, что не является датой.

Ответ 3

Не уверен на 100%, как это происходит в Yii2, но выходит из Yii1, который должен был выглядеть так...

array('org_datetime', 'date', 'format'=>'yyyy-M-d H:m:s'),

(источник: http://www.yiiframework.com/wiki/56/#hh8)

... Я бы сказал, что мне нужно будет выглядеть примерно так в Yii2:

['shopping_date', 'date', 'format' => 'yyyy-M-d H:m:s'],