Yii Framework 2.0。日付用のテキスト入力フィールドを持つフォームがあります。Yii Framework 2.0 Class yii\validators\Validatorおよびモデルクラスのrules()メソッド内で使用できるすべてのバリデータキーを知っています。date以下のようにキーを入力しても、何も検証されません。つまり、その入力フィールドにテキストを入力してフォームを投稿できることを意味します。
それをbooleanまたはemailに変更すると、入力フィールドに何か間違っていると非常によく検証されることがわかりました。 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(); ?>
Boy the Yii docs suck。彼らは例を挙げさえしません。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
が一体何であるかさえも述べていません。そして何よりも、例なし!
実用的なソリューション。私の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バリデータではありません。送信ボタンをクリックした後、日付以外の何かを入力するとエラーメッセージが表示されます。
モデルルールからこのような日付を検証できます
public function rules(){
return [
[['date_var'],'date', 'format'=>'d-m-yy'],
[['from_date', 'to_date'], 'default', 'value' => null],
[['from_date', 'to_date'], 'date'],
];
}
Yii2での状態が100%確実ではありませんが、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'],