В действиях контроллера для перенаправления я использую это:
$this->redirect(array('controller' => 'tools', 'action' => 'index'));
или это
$this->redirect('/tools/index');
И когда я передаю данные с перенаправлением, я использую это:
$this->redirect('tools/index/?myArgument=12');
Но я не мог найти, как передать «myargument» посредством нотации «this-redirect-array».
Я не хочу использовать это, потому что некоторые проблемы маршрутизации:
$this->redirect(array('controller' => 'tools', 'action' => 'index', "myArgument"));
Мне нужно что-то вроде этого:
$this->redirect(array('controller' => 'tools', 'action' => 'index', "?myArgument=12"));
Cake действительно поддерживает аргументы запроса, используя знак вопроса, например:
$this->redirect(array( 'controller' => 'tools', 'action' => 'index', '?' => array( 'myArgument' => 12 ) ));
http://book.cakephp.org/2.0/en/development/routing.html#reverse-routing
Но было бы лучше, просто, как сказал:
$this->redirect(array( 'controller' => 'tools', 'action' => 'index', 'myArgument' => 12 ));
Это должно работать:
$this->redirect(array('controller' => 'tools', 'action' => 'index', 'myArgument' => 12));
Взгляните на CakePHP Cookbook – Controller :: redirect
Доступ к параметрам запроса :
$this->request['myArgument']; $this->request->myArgument; $this->request->params['myArgument'];
Используя это для перенаправления:
$this->redirect(array('controller' => 'tools', 'action' => 'index', 'myArgument' => 12));
И Router :: connectNamed () для router.php, чтобы сменить разделитель с ":" на "=":
Router::connectNamed( array('myArgument' => array('action' => 'index', 'controller' => 'tools')), array('default' => false, 'greedy' => false, 'separator' => '=')
);