Я использую Yii Framework 2.0. У меня есть форма с текстовым полем ввода, предназначенным для даты. Я прочитал Yii Framework 2.0 о классе yii \ validators \ Validator и знал все ключи валидатора, которые могут использоваться внутри метода rules () в классе модели. Когда я использую ключ даты, как показано ниже, он ничего не подтверждает. Это означает, что я все еще могу поместить некоторый текст в это поле ввода и могу опубликовать форму.
Когда я изменил его на логическое или электронное письмо , я понял, что он очень хорошо обосновывается, когда я помещаю что-то неправильно в поле ввода. Как я могу проверить значение даты внутри поля ввода с помощью Yii Framework 2.0?
Мой метод правил ():
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(); ?>
Мальчик Yii docs сосать. Они даже не приводят пример. Работая с ответа О'Коннора, это сработало для меня с тех пор, как я присвоил значение в формате 2015-09-11
.
// Rule [['event_date'], 'date', 'format' => 'php:Ym-d'] // Assignment $agkn->event_date = date('Ym-d');
Документы даже не указывают, откуда пришел format
или timestampAttribute
или как их использовать. Он даже не говорит, что такое from_date
и to_date
. И больше всего примеров нет !
Рабочее решение. Мой метод правил ():
public function rules() { return [ [['inputfield_date'], 'required'], [['inputfield_date'], 'safe'], ['inputfield_date', 'date', 'format' => 'yyyy-Md 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. После нажатия кнопки «Отправить» вы увидите сообщение об ошибке, если вы введете что-то еще, что не является датой.
Не на 100% уверен, как это происходит в Yii2, но выходит из Yii1, который должен был выглядеть так …
array('org_datetime', 'date', 'format'=>'yyyy-Md H:m:s'),
(источник: http://www.yiiframework.com/wiki/56/#hh8 )
… Я бы сказал, что мне нужно будет выглядеть примерно так в Yii2:
['shopping_date', 'date', 'format' => 'yyyy-Md H:m:s'],