2014-12-02 2 views
0

У меня есть виды, которые вызывается из разных точек зрения. Просмотр прав клиентов можно вызвать из списка клиентов, поиска клиентов, из заказа и т. Д. Некоторые из этих представлений являются простыми представлениями, другие содержат формы для добавления, редактирования или удаления данных. После того, как пользователь сделал то, что должен был сделать в этой форме, он должен быть перенаправлен в вызывающую форму или в другую форму.CakePHP: гибкое перенаправление для представлений и контроллеров

Использование $this->referer() не будет работать, как некоторые Navigations должны идти, как это:

список заказов -> Изменить порядок -> удалить заказ -> список заказов.

Мне было бы хорошо с определением перенаправления для каждого вызова, поэтому я попытался использовать строки запроса и добавил ?redirectTarget=<wherever> к каждой ссылке или перенаправлению. Для этого я сделал функцию контроллера

в AppController.php

public function getRedirectTarget() { 
    if ($this->request->query('redirectTarget')) { 
     return $this->request->query('redirectTarget'); 
    } else { 
     return array(
      'controller' => 'pages', 
      'action' => 'home' 
     ); 
    } 
} 

Это работает для форм, как я могу использовать getRedirectTarget() в моих контроллерах, но я не могу получить доступ к этой функции изнутри целью построить ссылку , (В leas я не сделал этого Can you call a controller function from a view in CakePHP?). В примере сверху я должен передать информацию из списка заказов в представление редактирования, чтобы построить ссылку и базовый контроллер для действия формы.

Теперь у меня разные мысли в голове, но ни с одним из них я не очень счастлив. Я не уверен, куда идти.

  • Есть что-то в CakePhp Я еще не нашел?
  • используя $ this-> requestAction?
  • изменение всех форм и кнопок и выполнение всех перенаправлений в контроллерах?
  • Есть ли способ создать переменную для каждого вида?

Как мне кажется, как требование к comon, и я довольно новичок в CakePHP. Я прошу вашего совета.

ответ

0

Использование requestAction должно быть лучшим способом.

В воззрениях, вы можете иметь что-то вроде

$redirect = $this->requestAction('/mycontroller/requestAction'); 
$url = $this->Html->link('Continue', $redirect)); 
+0

Спасибо, что работал для меня. Не могу сказать ничего о производительности, так как это очень маленькое приложение. – Axx

Смежные вопросы