Cake PHP Перенаправление на страницу просмотра после добавления новой записи - PullRequest
0 голосов
/ 17 марта 2020

У меня есть веб-сайт управления лидами Cake PHP, и когда вы создаете новое ведение, я хочу, чтобы он перенаправлял вас на страницу просмотра для этого лида, но я не могу понять это.

Вот мой текущий добавочный контроллер.

    /**
     * Add method
     *
     * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
     */
    public function add()
    {
        $lead = $this->Leads->newEmptyEntity();
        if ($this->request->is('post')) {
            $lead = $this->Leads->patchEntity($lead, $this->request->getData());
            if ($this->Leads->save($lead)) {
                $this->Flash->success(__('The lead has been saved.'));
                return $this->redirect(['action' => 'index']);
            } else {
            $this->Flash->error(__('The lead could not be saved. Please, try again.'));
          }
        }
        $this->set(compact('lead'));
        $this->set('user', $user);
    }

Строка, о которой я вспоминаю: return $this->redirect(['action' => 'index']);.

Для контроллера редактирования я смог сделать return $this->redirect(['action' => 'view', $id]);, но это не работает здесь, и я не могу понять это.

Любая помощь будет оценена. Если это имеет значение, идентификаторы - это просто последовательный счетчик в MySQL.

Ответы [ 2 ]

1 голос
/ 22 марта 2020

Попробуйте это:

/**
     * Add method
     *
     * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
     */
    public function add()
    {
        $lead = $this->Leads->newEmptyEntity();
        if ($this->request->is('post')) {
            $lead = $this->Leads->patchEntity($lead, $this->request->getData());
            if ($savedLead = $this->Leads->save($lead)) {
                $this->Flash->success(__('The lead has been saved.'));
                return $this->redirect(['action' => 'view', $savedLead->id]);
            } else {
                $this->Flash->error(__('The lead could not be saved. Please, try again.'));
            }
        }
        $this->set(compact('lead'));
        $this->set('user', $user);
    }

Здесь вам нужно установить переменную, содержащую результат сохраненной вами записи ( saveLead в вашем случае). Эта переменная будет содержать id недавно сохраненной записи, и вы можете передать ее в метод view .

0 голосов
/ 17 марта 2020

В чем проблема с

return $this->redirect(['action' => 'view', $lead->id]);

?

...