Cakephp 2.0: данные массива в контроллере (из поста) не редактируются - PullRequest
2 голосов
/ 21 января 2012

У меня есть простое приложение, и страница редактирования в моем контроллере выглядит так:

    function admin_edit($id = null) {

        if (empty($this->data)) {
            $this->data = $this->Product->read(); //product is the model

        } else {
           //its a post request, and $this->data is populated 
            debug($this->data);     

            //i force the id to another id
            $this->data["Product"]["id"] = 115;

            debug($this->data); //the data remains the same, doesnt change.. why?   

           //i will save this later         
        }
}

Обе отладки приводят к этому:

до

Array
(
    [Product] => Array
        (
            [id] => 8
            [alias] => ME
            [order] => 80
            [open_close_images] => 1
            [gallery_id] => 8
            [video_id] => 2
        )
)

после

Array
(
    [Product] => Array
        (
            [id] => 8 //it must be 115 now!!
            [alias] => ME
            [order] => 80
            [open_close_images] => 1
            [gallery_id] => 8
            [video_id] => 2
        )
)

Почему это?

В cakephp 1.3, который работал хорошо, я не понимаю, как можно "заблокировать" этот массив.

1 Ответ

3 голосов
/ 21 января 2012

Попробуйте установить идентификатор с помощью (пере) установки идентификатора модели var, например:

$this->Product->id = 115;

Это должно правильно обновить идентификатор.

РЕДАКТИРОВАТЬ

Если вы пытаетесь обновить другие значения, используйте вместо этого $this->request->data (так называется с CakePHP 2.0), например:

$this->request->data['Product']['id'] = 115;
...