CakePHP передает аргументы в Controller :: redirect

В действиях контроллера для перенаправления я использую это:

$this->redirect(array('controller' => 'tools', 'action' => 'index'));

или это

$this->redirect('/tools/index');

И когда я передаю данные с перенаправлением, я использую это:

$this->redirect('tools/index/?myArgument=12');

Но я не смог найти способ передать «мой аргумент» с помощью "this-redirect-array" нотации.
Я не хочу использовать это, потому что некоторые проблемы маршрутизации:

$this->redirect(array('controller' => 'tools', 'action' => 'index', "myArgument"));

Мне нужно что-то вроде этого:

$this->redirect(array('controller' => 'tools', 'action' => 'index', "?myArgument=12"));
 Lèse majesté25 июн. 2012 г., 17:34
Как демонстрирует Jleagle, этоis Можно использовать понятие массива для создания стандартных строк запроса RFC 3986, но это, как правило, не очень хорошая идея. Есть ли конкретная причина, по которой вы не хотите использовать дружественную маршрутизацию Cake?

Ответы на вопрос(3)

Решение Вопроса

используя знак вопроса, например:

$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
));
 trante25 июн. 2012 г., 19:49
Это было то, что мне нужно, спасибо
 25 июн. 2012 г., 17:40
Правильно, я не знал'?' может быть использован для этого.

$this->redirect(array('controller' => 'tools', 'action' => 'index', 'myArgument' => 12));

И Router :: connectNamed () для router.php, чтобы изменить разделитель с & quot;: & quot; на & quot; = & quot ;:

Router::connectNamed(
    array('myArgument' => array('action' => 'index', 'controller' => 'tools')), array('default' => false, 'greedy' => false, 'separator' => '=')

);

$this->redirect(array('controller' => 'tools', 'action' => 'index', 'myArgument' => 12));

Взгляни наCakePHP Cookbook - Контроллер :: перенаправление

Доступ к параметрам запроса:

$this->request['myArgument'];
$this->request->myArgument;
$this->request->params['myArgument'];
 trante24 июн. 2012 г., 19:03
Хорошо, это решение создаст это: & quot;tools/index/myArgument:12& Quot; Но мне нужно это: & quot;tools/index/?myArgument=12& Quot;
 31 июл. 2016 г., 17:02
@trante просто вы можете использовать?$this->redirect(array('controller' => 'tools', 'action' => 'index', '?' => array('variableName' => 'variableValue'))); а затем в индексе действий вы можете использовать$variableValue = $this->request->query('variableName');
 25 июн. 2012 г., 17:20
@trante Я отредактировал свой ответ, чтобы показать вам, как получить доступ к этому параметру. Не вижу смысла смешиватьCakePHP маршруты с классической строкой запроса. Есть ли какая-то конкретная причина для этого? @ Росс хороший комментарий, но вопрос дляCakePHP2 ;)
 trante25 июн. 2012 г., 19:51
@des Потому что я не хотел менять слишком много кода маршрутизации только для одного случая :) :)
 24 июн. 2012 г., 22:08
какая причина почему? Вы можете получить доступ к этому параметру, используя$this->params['named'], В зависимости от того, как вы передаете дополнительные параметры, зависит от URL, который выводится.More in the manual

Ваш ответ на вопрос