我有以下代码:
echo $this->Form->input('date', array(
'label' => __('Date')
)
);
生成一个select
表示年,一个用于月,一个用于日。我想要一个输入文本而不是select
我可以输入所有日期的文本。所以,我已经做到了:
echo $this->Form->input('date', array(
'label' => __('Date'),
'type' => 'text'
)
);
表单有效但验证不起作用,我无法在控制器上获得正确的数据(Cake 的"自动魔术"),但找不到问题所在。
如果要验证值是否为日期,请在模型中使用它:
public $validate = array(
'your_date_column' => array(
'rule' => 'date',
'message' => 'Enter a valid date'
)
);
当您像这样使用表单帮助程序时:
$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'];
我不知道您想如何获取日期或如何将其存储在数据库中,但是当您从一种类型更改为另一种类型时,您必须考虑到这一点。