2015-03-18 4 views
0

Я локализую проект, написанный на ZF2. И в некоторых местах ребята используют статические переменные в слое модели.ZF2 view helper in model

public function getTransitions() 
    { 
     $transitions = array(
      static::STATE_NEEDS_REVIEW   => 'Needs Review', 
      static::STATE_NEEDS_REVISION  => 'Needs Revision', 
      static::STATE_ARCHIVED    => 'Archive' 
     ); 
//  some code... 
     return $transitions; 
    } 

У меня есть специальный помощник вида для перевода, который является в основном оболочкой ZF2-переводчика с некоторыми дополнительными функциями. Я знаю, как использовать его в видимом слое и в контроллерах, как это:

$t = $this->getServiceLocator()->get('ViewHelperManager')->get('t'); 

Но как можно использовать мой взгляд помощника в модели слоя ???

ответ

0

Если вам необходимо получить доступ к локатора службы в модели, вы можете реализовать ServiceLocatorAwareInterface, как описано в вопросе и ответить здесь:

injecting ServiceLocator via ServiceLocatorAwareInterface doesnt work

Однако, я хотел бы предложить, что с помощью помощника вида в модель может быть не лучшим способом. Возможно, вы могли бы взять соответствующую логику из ViewHelper и перенести ее на сервис, который вы можете сделать доступным для класса модели, либо путем инъекции, либо просто создавая его, когда это необходимо. Тогда помощник вида мог использовать ту же службу.