2014-01-14 2 views
0

Использование ZF2 с доктриной 2.Передача Менеджер объектов в целях

Для нужд приложения я проходил objectmanager в качестве переменной ($om) в return new ViewModel

так что я могу использовать его на мой взгляд:

$om->getRepository('\Schema\Entity\Category')->findBy(..... 

дело в том, что меня смущает:

1) Должен ли я нарушать правила MVC? (Потому что некоторые говорят, что это плохая практика, а некоторые другие нет)

2) Могу ли я столкнуться с любыми проблемами с разработкой приложения, используя эту тактику?

+0

Это плохая практика. Это нарушит концепцию MVC. – venimus

ответ

1
  1. да вы
  2. нарушение стандартов кодирования всегда имеет негативные побочные эффекты

Работа контроллера заключается в передаче данных вам нужно в поле зрения. Для этого Назначение Контроллер взаимодействует с Моделью.

public function fooAction() 
{ 
    return new ViewModel([ 
     'entities' => $this->getObjectManager()->findBy([ 
      'foo' => 'bar' 
     ]) 
    ]); 
} 

Это в значительной степени, как вы это сделаете. Следующий вопрос для вас должен be: Что делает getObjectManager() делать или как правильно вставлять ObjectManager в контроллер?

Ответ так прост: Вы должны использовать контроллер-заводы

//module.config.php 
'controllers' => [ 
    'factories' => [ 
     'YourNamespace\Controller\FooController' => function($cpm) { 
      $ctrl = new FooController(); 
      $ctrl->setObjectManager(
       $cpm->getServiceLocator()->get('Doctrine\ORM\EntityManager') 
      ); 
      return $ctrl; 
     } 
    ] 
] 

И это все, что есть в ней. Теперь у вас очень четкая настройка того, чего вы хотите достичь;)

Смежные вопросы