【问题标题】:CakePHP - Error saving date fieldCakePHP - 保存日期字段时出错
【发布时间】:2012-01-29 16:00:17
【问题描述】:

我无法使用 CakePHP 将日期字段保存到数据库中。

表格列名

[User].[dob]

查看

<?php echo $this->Form->input('dob', array('type'=> 'date', 'label' => FALSE, 'dateFormat' => 'DMY', 'minYear' => date('Y') - 111, 'maxYear' => date('Y'))); ?>

提交表单时出现以下错误-

2011-12-29 00:33:57 调试:注意事项 (8):[C:\xampp\htdocs\dearmemoir\cake\libs\router.php,第 1573 行] 中的数组到字符串转换]

此字段是身份验证用户模型的一部分。有什么想法可能出了什么问题?

【问题讨论】:

  • 我认为你正在连接一个数组,就像它是一个字符串一样。尝试将其替换为 var_dump(...); 以查看您真正返回的内容。
  • 另外,date('Y') - 111 是一个字符串 - 一个 int,也许试试 intval(date('Y')) - 111 ?不,我的错,它有效!
  • 啊,我认为发生的事情是一个数组已作为参数传递到您的 args 数组中,而 cake 正试图像字符串一样连接它。
  • 我用 1900 替换了 [date('Y') - 111] 仍然看到同样的错误!
  • 是的,事实证明 PHP 不会介意那里,但我会尝试这样做:&lt;?php var_dump( $this-&gt;Form-&gt;input('dob', array('type'=&gt; 'date', 'label' =&gt; FALSE, 'dateFormat' =&gt; 'DMY', 'minYear' =&gt; date('Y') - 111, 'maxYear' =&gt; date('Y'))) ); ?&gt;。这是方法吗:api.cakephp.org/class/form-helper#method-FormHelperinput

标签: php cakephp cakephp-1.3


【解决方案1】:

这行代码为我创造了魔力 -

$this->data['User']['dob'] = date('Y-m-d', strtotime($this->data['User']['dob']));

我现在可以保存数据了!

【讨论】:

  • 您在哪里添加了此代码。我的意思是哪个文件和在哪里。
【解决方案2】:

我怀疑你找错地方了。错误消息来自 CakePHP 路由 (router.php) - 即可能是您正在使用的重定向 URL。

您提供的示例代码看起来正确,它几乎完全匹配Cake cookbook 中的示例:

echo $this->Form->input('birth_dt', array( 'label' => 'Date of birth', 'dateFormat' => 'DMY', 'minYear' => date('Y') - 70, 'maxYear' => date('Y') - 18 ));

您可以为任何validation errors 添加支票。

【讨论】:

    猜你喜欢
    • 2012-01-04
    • 2016-09-22
    • 1970-01-01
    • 2012-11-30
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多