如何在模型中获取Symfony会话变量?

时间:2011-12-01 11:58:15

标签: symfony1 session-variables

如何在不使用sfContext::getInstance()的情况下在symfony模型中传递会话变量?

2 个答案:

答案 0 :(得分:2)

推荐的方法称为依赖注入,其工作方式如下:在模型文件中创建setUser()方法,将给定参数保存到私有属性:

class Foo {
  private $_user;

  public function setUser(myUser $user) {
    $this->_user = $user;
  }

  // ... later:

  public function save(Doctrine_Connection $conn = null) {
    // use $this->_user to whatever you need
  }
}

这看起来很笨拙,因为它是。但是,如果没有你回答问题你想做什么?我无法提供替代方案。

推荐文章:

答案 1 :(得分:-1)

会话变量应存储为用户的属性。

// in an action: 
$this->getUser()->setAttribute('current_order_id', $order_id);

了解如何取回它。

// later on, in another action, you can get it as:
$order_id = $this->getUser()->getAttribute('current_order_id', false);
if($order_id!==false)
{
    // save to DB
} else {
    $this->getUser()->setFlash('error', 'Please selected an order before you can do stuff.');
    // redirect and warn the user to selected an order
    $this->redirect('orders');
}