Symfony: pass parameter between actions (with a redirect)

流过昼夜 提交于 2019-12-01 18:06:35

Why dont you use sessions to store values before redirecting, and then getting them on the other action after you redirected? like:

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
  }
}

The best way of passing a variable between two Actions is by using 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');
}

To use the variable in Twig template use this --

{% for flashVar in app.session.flashbag.get('baz') %}
    {{ flashVar }}
{% endfor %}

Another solution that does not redirect the browser

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');

  }
}

`

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!