2014-09-28 81 views
13

我使用Yii框架2.0。我有一个带有文本输入字段的表单,用于日期。我已阅读Yii框架2.0关于类YII \验证\验证和已知能的规则内使用的所有验证密钥()方法在一个模型中的类。当我如下使用日期键时,它不验证任何内容。这意味着我仍然可以在该输入字段中放置一些文本并可以发布该表单。Yii框架2.0规则日期验证

当我把它改为布尔电子邮件,我看得出来,它验证很好,当我把一些错误的输入字段。如何使用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(); ?> 
+0

请发表您的窗体的代码在你的视图文件,也是完整的规则阵列,你有它在你的模型... – webeno 2014-09-28 18:57:19

+0

我刚编辑我的问题与)规则的代码(方法和内部形式查看页面。希望你能帮助。先谢谢了! – 2014-09-28 19:06:25

+0

你有没有解决这个问题的机会?我有同样的问题 – NEWBIE 2015-06-26 13:22:51

回答

1

不是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'], 
+0

我已经完成了相同的操作,但是它没有验证上述代码示例中的任何内容。请注意,我已将日期选择器的日期格式配置为'Y-m-d'。一定要像你的dateformat'yyyy-M-d H:m:s'? – 2014-09-29 06:26:56

+0

不,这种格式只是一个例子,请仔细阅读Yii文档,您可能想从这里开始:http://www.yiiframework.com/doc-2.0/yii-helpers-formatconverter.html – webeno 2014-09-29 08:00:58

+0

谢谢,但它不是关于日期格式或如何将一种格式转换为另一种格式。这是关于'日期'验证程序,它不会做他的工作。您的代码示例应该可以工作,但它不起作用。我认为这是Yii Framework 2.0中的一个错误 – 2014-09-29 08:58:43

6

工作方案。我的规则()方法:

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验证器。点击提交按钮后,如果输入其他不是日期的东西,则会看到错误消息。

+1

我试过这个没有运气。即使在表单提交之后,dateValidator也不会进行验证 – NEWBIE 2015-06-26 13:25:59

21

男孩的Yii的文档吮吸。他们甚至不举例。从O'Connor的回答开始工作,因为我分配的格式为2015-09-11格式,所以这对我很有用。

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

docs甚至不指定formattimestampAttribute从哪里来的,是如何使用它们。它甚至没有说明什么是from_dateto_date。最重要的是,没有例子