Cakephp日期自动化

时间:2012-11-19 20:28:08

标签: cakephp cakephp-2.0

我有以下代码:

echo $this->Form->input('date', array(
        'label' => __('Date')
    )
);

一年生成一个select,一个生成一个月,一个生成一天。我想要一个输入文本而不是select,我可以把所有日期。所以,我做了:

echo $this->Form->input('date', array(
        'label' => __('Date'),
        'type' => 'text'
    )
);

表格有效,但验证不起作用,我无法在Controller获得正确的数据(Cake的“自动化”),但无法找到错误。

2 个答案:

答案 0 :(得分:0)

如果您要验证该值是否为日期,请在模型中使用:

public $validate = array(
   'your_date_column' => array(
           'rule'       => 'date',
           'message'    => 'Enter a valid date'
    )
);

答案 1 :(得分:0)

当你使用这样的表单助手时:

$this->Form->date('demo', array('type' => 'date'));

生成的日期数据将以以下格式在控制器中接收:

$this->request->data['Model_name']['demo']['month'];
$this->request->data['Model_name']['demo']['day'];
$this->request->data['Model_name']['demo']['year'];

在您的情况下,如果您使用这样的文本框:

$this->Form->date('demo', array('type' => 'string'));

你会得到这样的日期:

$this->request->data['Model_name']['demo'];

我不知道您希望如何获取日期或如何将其存储在数据库中,但是当您从一种类型更改为另一种类型时,您必须考虑这一点。