Symfony: pass parameter between actions (with a redirect)

后端 未结 3 1746
清酒与你
清酒与你 2021-01-18 07:35

I am redirecting from one action (executeProcess) to another (executeIndex). I want to be able to pass a parameter/variable along, without using GET (e.g. $this->re

相关标签:
3条回答
  • 2021-01-18 08:14

    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
      }
    }
    
    0 讨论(0)
  • 2021-01-18 08:33

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

    `

    0 讨论(0)
  • 2021-01-18 08:37

    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 %}
    
    0 讨论(0)
提交回复
热议问题