修改cakephp请求 - >数据数组

时间:2014-11-11 17:21:14

标签: cakephp

我正在尝试用简单的博客学习蛋糕。我用蛋糕烘烤来制作我的控制器。 Post模型有一个created_date字段,但我想在服务器端设置它(客户端可以篡改它)。我在添加控制器中添加了几行代码,如下所示:

public function add() {
    if ($this->request->is('post')) {
      $this->Post->create();
      date_default_timezone_set("UTC");
      $this->request->data['Post']['created_date'] = date("c"); //set create date server side
      if ($this->Post->save($this->request->data)) {
        $this->Session->setFlash(__('The post has been saved.'));
        return $this->redirect(array('action' => 'index'));
      } else {
        $this->Session->setFlash(__('The post could not be saved. Please, try again.'));
      }
    }
    $authors = $this->Post->Author->find('list');
    $tags = $this->Post->Tag->find('list');
    $this->set(compact('authors', 'tags'));
  }

问题是创建的日期根本没有保存,它设置为0000-00-00。我读到的一切都说这应该是好的。即使我查看debugkit,它也会显示post数据在数组中具有正确的created_date。

2 个答案:

答案 0 :(得分:5)

如果您遵循cakephp的约定,那么框架将自动为您填充此字段。 您有两种选择:

  1. 将您想要的字段重命名为'created',并将其设置为日期时间 数据库,如果您不通过发布的数据手动传递值,框架将负责其余的工作

  2. 使用此:$this->request->data['Post']['created_date'] = DboSource::expression('NOW()');

答案 1 :(得分:0)

日期的字段类型是什么..是日期时间还是日期..数据库中可接受的格式是什么..您可以尝试在表格中插入一个日期以查看格式。

我有类似的问题,date shows 0000-00-00,但后来我意识到我必须遵循基于数据库的格式。如果您的日期来自表单,只需使用以下内容将其转换为正确的格式。

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

相应地更改日期格式。