cakephp: перейти на предыдущую страницу после редактирования плеера

У меня есть игроки на страницах. Я, например, на странице 13. Здесь я нажимаю на функцию редактирования, чтобы редактировать игрока. Теперь после редактирования я хочу вернуться на эту страницу 13, но она остается на странице редактирования.

редактировать действие:

public function admin_edit($id = null) {
    if (!$this->Player->exists($id)) {
        throw new NotFoundException(__('Invalid player'));
    }
    if ($this->request->is(array('post', 'put'))) {
        $data = $this->request->data['Player'];
        if(!$data['player_image']['name']){
            unset($data['player_image']);
        }
        if ($this->Player->save($data)) {
            $this->Session->setFlash(__('The player has been saved.'));
            $this->redirect($this->referer());
        } else {
            $this->Session->setFlash(__('The player could not be saved. Please, try again.'));
        }
    } else {
        $options = array('conditions' => array('Player.' . $this->Player->primaryKey => $id));
        $this->request->data = $this->Player->find('first', $options);
    }
    $videos = $this->Player->Video->find('list');
    $this->set(compact('videos'));
}

просмотреть действие:

public function admin_view($id = null) {
    if (!$this->Player->exists($id)) {
        throw new NotFoundException(__('Invalid player'));
    }
    $options = array('conditions' => array('Player.' . $this->Player->primaryKey => $id));
    $this->set('player', $this->Player->find('first', $options));
}

1 ответ

Решение

Вы можете сохранить ссылающуюся страницу в else раздел if/else структура функции редактирования. Затем используйте это сохраненное значение в if (То есть, $this->request->is(array('post', 'put')) = TRUE раздел.

Итак, ваш код будет выглядеть примерно так:

public function admin_edit($id = null) {
  if ($this->request->is(array('post', 'put'))) {

    /* your other code */

    $sendback = $this->Session->read('referer');
    $this->Session->delete('referer');
    $this->redirect($sendback);

  } else {

    /* your other code */

    $this->Session->write('referer', $this->referer());
  }
}
Другие вопросы по тегам