Cakephp日期自动控制

Cakephp日期自动控制,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,我有以下代码: echo $this->Form->input('date', array( 'label' => __('Date') ) ); 这将生成一个为年选择,一个为月选择,一个为日选择。我想要一个输入文本而不是选择,我可以将所有日期放入其中。因此,我做了: echo $this->Form->input('date', array( 'label' => __('Date'), 'type'

我有以下代码:

echo $this->Form->input('date', array(
        'label' => __('Date')
    )
);
这将生成一个
为年选择
,一个为月选择,一个为日选择。我想要一个输入文本而不是
选择
,我可以将所有日期放入其中。因此,我做了:

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

表单起作用,但验证不起作用,我无法在控制器上获得正确的数据(Cake的“automagic”),但找不到问题所在。

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

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

当您像这样使用表单帮助器时:

$this->Form->date('demo', array('type' => 'date'));
$this->Form->date('demo', array('type' => 'string'));
$this->request->data['Model_name']['demo'];
生成的日期数据将以以下格式在控制器中接收:

$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' => 'date'));
$this->Form->date('demo', array('type' => 'string'));
$this->request->data['Model_name']['demo'];
你会得到这样的约会:

$this->Form->date('demo', array('type' => 'date'));
$this->Form->date('demo', array('type' => 'string'));
$this->request->data['Model_name']['demo'];
我不知道您希望如何获取日期或如何将其存储在数据库中,但当您从一种类型更改为另一种类型时,必须考虑到这一点