Как получить переменную сеанса Symfony в модели? - PullRequest
1 голос
/ 01 декабря 2011

Как передать переменную сеанса в модель Symfony без использования sfContext::getInstance()?

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

Рекомендуемый способ называется внедрением зависимостей и работает следующим образом: вы создаете метод 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
  }
}

Это выглядит неуклюже, потому что это так.Но без ответа на вопрос что вы пытаетесь сделать? Я не могу дать альтернативу.

Рекомендуемые статьи:

0 голосов
/ 01 декабря 2011

Переменные сеанса должны храниться как атрибуты пользователя.

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