Почему этот код Symfony не работает? - PullRequest
1 голос
/ 17 июня 2010

Я пытаюсь передать параметры из одного действия (foo) в другое (foobar).

В действии foo я задаю аргументы следующим образом:

$request->getParameterHolder()->set('arg1', 'alice');
$request->getParameterHolder()->set('arg2', 'bob');

В действии foobar,Я пытаюсь получить параметры следующим образом:

$arg1 = $request->getParameter('arg1');
$arg2 = $request->getParameter('arg2');

$this->forward404Unless($arg1 && $arg2); //always forwarded

Примечание: я знаю, что могу сохранить параметры в переменной сеанса пользователя - но я не хочу этого делать.Я хочу передать их в качестве параметров - есть идеи, как заставить это работать?

Ответы [ 2 ]

2 голосов
/ 17 июня 2010

Вы можете просто попробовать это:

    $this->redirect('module/action2?'.
      http_build_query(array("arg1"=> "alice", "arg2"=>"bob")));
1 голос
/ 17 июня 2010

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

Вы можете использовать forward , если вы хотите, чтобы действие foobar выполнялось после foo.В отличие от перенаправления, он будет находиться в том же цикле запросов, поэтому вы можете передавать переменные, не касаясь сеанса.

Вы не говорите, почему не хотите использовать сеанс, но в Symfony есть промежуточный дом: флэш-атрибуты .Они хранятся в сеансе, но гарантированно не доживут до следующего запроса, который может быть подходящим компромиссом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...