Cake中的日期验证

时间:2010-07-20 18:54:39

标签: validation cakephp cakephp-1.3

如何在Cake应用程序中使用内置日期格式?也许我犯了一些简单的错误。我现在专注于模型代码,我认为这就是我搞砸了。

在页面上看起来它正在工作,显示三个选择的小部件,按顺序包含月,日,年。但是,当我提交表单时,我收到“必须是有效日期”的消息。

以下是我的观看代码:

echo $this->Form->create('Subscription');
echo $this->Form->input('starts',array('type'=>'date','dateFormat'=>'MDY'));
echo $this->Form->end('Submit', true);

在我的模型中,验证看起来像这样:

'starts' => array(
    'date' => array(
    'rule' => array('date', array('MDY')),
    'message' => 'Must be a valid date',
    ),
    'notempty' => array(
        'rule' => array('notempty'),
        'message' => 'Start date is required',
    ),
),

我正在尝试更新的字段在mysql数据库中声明为DATETIME,以防有所不同。

3 个答案:

答案 0 :(得分:1)

我不记得我的头脑,但我认为你必须使用生成的日期输入来构建你自己的日期。

!! - 擦洗 - !!

‘Mdy’ e.g. December 27, 2006 or Dec 27, 2006 (comma is optional)

如果没有提供密钥,将使用的默认密钥是'ymd'。

我正在使用SpawnCxy。

答案 1 :(得分:1)

我在Cake 2.0数据验证文档(http://book.cakephp.org/2.0/en/models/data-validation.html#Validation::datetime)中找到了以下信息:

Validation::datetime(array $check, mixed $dateFormat = 'ymd', string $regex = null)
This rule ensures that the data is a valid datetime format. A parameter (which can be an array) can be passed to specify the format of the date. The value of the parameter can be one or more of the following:

'dmy' e.g. 27-12-2006 or 27-12-06 (separators can be a space, period, dash, forward slash)
'mdy' e.g. 12-27-2006 or 12-27-06 (separators can be a space, period, dash, forward slash)
'ymd' e.g. 2006-12-27 or 06-12-27 (separators can be a space, period, dash, forward slash)
'dMy' e.g. 27 December 2006 or 27 Dec 2006
'Mdy' e.g. December 27, 2006 or Dec 27, 2006 (comma is optional)
'My'  e.g. (December 2006 or Dec 2006)
'my'  e.g. 12/2006 or 12/06 (separators can be a space, period, dash, forward slash)
 if no keys are supplied, the default key that will be used is 'ymd':

答案 2 :(得分:0)

我在parameter list中找不到参数MDY。您可以尝试Mdy