CakePHP注册表:出生日期作为数组返回

时间:2014-05-07 03:34:50

标签: cakephp cakephp-2.0

我正在创建一个注册页面,我遇到的唯一问题是我输入的日期输入是一个数组,它在提交时打破了我的SQL请求,我想确保只有日期和没有与提交时间有关。

我的数据库中的列标记为DoB,并且是用户提交表单后将提交的日期。 代码:

echo $this->Form->input('DoB', array(
    'label' => 'Date of birth',
    'type' => 'date',
    'dateFormat' => 'YMD',
    'minYear' => date('Y') - 70,
    'maxYear' => date('Y') - 16,
));

我还没有找到并理解它,但我相信如果我以DoB的同名名做一组年月日输入,我可以达到同样的效果。

编辑:我想传递给列的值将被格式化为: YYYY-MM-DD

演示: 在其他值的地方测试。将DoB字段保留为默认值(' 1998',' May',' 7')。提交表单后,一条flash消息告诉我,我的SQL中没有定义的数组存在致命错误。

SQL错误: (数据列:"用户名","密码"," fName"," lName"," DoB") (从表格输入:" test"," passwordtest"," test"," test"," Array")

2 个答案:

答案 0 :(得分:0)

您可以将正常输入保存到数据库,例如

    echo $this->Form->input('begin_time', array(
        'label' => 'Start',
        'value' => date('Y-m-d'). ' 09:00'
    ));

或者你可以使用这样的功能。在AppModel中

    /**
 * input field of type datetime returns array - this func change it 
 * @param array $dateTimeArray
 * @return string "YY-MM-DD HH-ii"
 */
public function timestamp($dateTimeArray) {

    return "{$dateTimeArray['year']}-{$dateTimeArray['month']}-{$dateTimeArray['day']} {$dateTimeArray['hour']}:{$dateTimeArray['min']}";
}

并且在之前的模型中保存使用它;)

答案 1 :(得分:0)

不要再担心了。原来我把它全部放在了错误的目录中。