Symfony: передать параметр между действиями (с перенаправлением) - PullRequest
6 голосов
/ 08 марта 2011

Я перенаправляю с одного действия (executeProcess) на другое (executeIndex). Я хочу иметь возможность передавать параметр / переменную без использования GET (например, $this->redirect('index', array('example'=>'true')))

Есть ли способ, которым я могу напрямую передавать параметры, не отображая их непосредственно в URL? (например, POST). Благодарю.

Ответы [ 3 ]

6 голосов
/ 09 марта 2011

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

class ActionClass1 extendes sfActions
{
  public function executeAction1(sfWebRequest $request)
  {
    [..]//Do Some stuff
    $this->getUser()->setAttribute('var',$variable1);
    $this->redirect('another_module/action2');
  }
}

class ActionClass2 extends sfActions
{
  public function executeAction2(sfWebRequest $request)
  {
    $this->other_action_var = $this->getUser()->getAttribute('var');
    //Now we need to remove it so this dont create any inconsistence
    //regarding user navigation
    $this->getUser()->getAttributeHolder()->remove('var');
    [...]//Do some stuff
  }
}
5 голосов
/ 07 октября 2013

Лучший способ передать переменную между двумя Действиями - использовать FlashBag

public function fooAction() {
    $this->get('session')->getFlashBag()->add('baz', 'Some variable');
    return $this->redirect(/*Your Redirect Code to barAction*/);
}

public function barAction() {
    $baz = $this->get('session')->getFlashBag()->get('baz');
}

Чтобы использовать переменную в шаблоне Twig, используйте это -

{% for flashVar in app.session.flashbag.get('baz') %}
    {{ flashVar }}
{% endfor %}
2 голосов
/ 11 августа 2011

Еще одно решение, которое не перенаправляет браузер

class someActionClass extends sfActions{
  function myExecute(){
    $this->getRequest()->setParameter('myvar', 'myval');
    $this->forward('mymodule', 'myaction')
  }
}


//Here are your actions in another module

class someActionClass2 extends sfActions{
  function myExecute2(){

    $myvar = $this->getRequest()->getParameter('myvar');

  }
}

`

...