0

CakePHP 2, I have an edit page. I would like to see what has been changed. Therefore, i need to get $this->request->data. However, it fails to get the old record (non-edit) and new record (edited). How can I do it? Please

    public function admin_edit($id = null) {
        $this->BrandImage->id = $id;
        if (!$this->BrandImage->exists($id)) {
            throw new NotFoundException(__('Invalid brand image'));
        }

        $old_content = array();
        $new_content = array();

        ***debug($this->request->data);***

        if ($this->request->is('post') || $this->request->is('put')) {
            if ($this->BrandImage->save($this->request->data)) {

                ***debug($this->request->data);***

                $this->Session->setFlash(__('The brand image has been saved'), 'flash/success');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The brand image could not be saved. Please, try again.'), 'flash/error');
            }
        } else {
            $options = array('conditions' => array('BrandImage.' . $this->BrandImage->primaryKey => $id));
            $this->request->data = $this->BrandImage->find('first', $options);
        }
        $brands = $this->BrandImage->Brand->find('list');
        $imageTypes = $this->BrandImage->ImageType->find('list');
        $this->set(compact('brands', 'imageTypes'));

    }
SamHecquet
  • 1,818
  • 4
  • 19
  • 26

1 Answers1

1

The modified data can be found in $this->request->data, and you can read the old data from the database before saving the posted data. Please find the example below:

public function admin_edit($id = null) {
    $this->BrandImage->id = $id;
    if (!$this->BrandImage->exists($id)) {
        throw new NotFoundException(__('Invalid brand image'));
    }

    $old_content = array();
    $new_content = array();

    ***debug($this->request->data);***


    if ($this->request->is('post') || $this->request->is('put')) {

        /* This is the old data read from the database before the save */
        $old_content = $this->BrandImage->find('first', array(
        'conditions' => array(
             'BrandImage.id' => $id 
                )
         ));

        debug($old_content);

        if ($this->BrandImage->save($this->request->data)) {

            ***debug($this->request->data);***

            $this->Session->setFlash(__('The brand image has been saved'), 'flash/success');
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The brand image could not be saved. Please, try again.'), 'flash/error');
        }
    } else {
        $options = array('conditions' => array('BrandImage.' . $this->BrandImage->primaryKey => $id));

        $this->request->data = $this->BrandImage->find('first', $options);
    }
    $brands = $this->BrandImage->Brand->find('list');
    $imageTypes = $this->BrandImage->ImageType->find('list');
    $this->set(compact('brands', 'imageTypes'));

}
Daniel W
  • 433
  • 3
  • 8