web-dev-qa-db-ja.com

Yii Framework 2.0 Rules Date Validator

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(); ?>
14
O Connor

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_dateto_dateが一体何であるかさえも述べていません。そして何よりも、例なし

27
Chloe

実用的なソリューション。私の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バリデータではありません。送信ボタンをクリックした後、日付以外の何かを入力するとエラーメッセージが表示されます。

7
O Connor

モデルルールからこのような日付を検証できます

public function rules(){
    return [
        [['date_var'],'date', 'format'=>'d-m-yy'],
        [['from_date', 'to_date'], 'default', 'value' => null],
        [['from_date', 'to_date'], 'date'],
    ];
}
2
Azraar Azward

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'],
1
webeno