0

我有以下代码:

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

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

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

表单有效,但验证无效,我无法在 Controller 获得正确的数据(Cake 的“自动”),但找不到问题所在。

4

2 回答 2

0

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

public $validate = array(
   'your_date_column' => array(
           'rule'       => 'date',
           'message'    => 'Enter a valid date'
    )
);
于 2012-11-19T21:31:00.480 回答
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'];

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

于 2012-11-20T19:14:16.193 回答