Изменить данные перед сохранением в базу данных - PullRequest
0 голосов
/ 22 декабря 2010

Я новичок в CakePHP: D

Как я могу изменить данные в контроллере, прежде чем CakePHP поместит данные в MySQL?

function add() {
    if (!empty($this->data)) {
        $this->Template->create();

                    /* This works! */
        $this->data['Template']['slug']     = Inflector::slug(utf8_encode(strtolower($this->data['Template']['name'])),'-');

                    /* does not work ! */
                    $this->data['Template']['created']  = time();           
        $this->data['Template']['category_id']  = $this->data['Template']['category'];

        if ($this->Template->save($this->data)) {
            $this->Session->setFlash('Your post has been saved.');
            $this->redirect(array('action' => 'index'));
        }
    }else{
                    /* dropdown */
        $this->set('categories',$this->Template->Category->find('list'));   
    }
}

Поля в моей базе данных:

Шаблоны

  • ID
  • пробковый
  • category_id (принадлежат категориям )
  • имя
  • создано

Может кто-нибудь помочь моему?

привет!

1 Ответ

2 голосов
/ 22 декабря 2010

Правильный способ - поместить его в вашу модель, а не в контроллер (потому что вы обрабатываете данные, поэтому они должны быть в модели).

Для этого вы можете использовать метод модели beforeSave:

Торт1.2: http://book.cakephp.org/view/683/beforeSave

Торт1.3: http://book.cakephp.org/view/1052/beforeSave

Торт 2: http://book.cakephp.org/2.0/en/models/callback-methods.html#beforesave

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...