1 <?php
2
3 namespace Balance\Model;
4
5 use Zend\ServiceManager\AbstractFactoryInterface;
6 use Zend\ServiceManager\ServiceLocatorInterface;
7
8 9 10
11 class AbstractModelFactory implements AbstractFactoryInterface
12 {
13 14 15
16 public function canCreateServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName)
17 {
18
19 $config = $serviceLocator->get('Config')['balance_manager']['factories'];
20
21 return
22 isset($config[$requestedName])
23 && isset($config[$requestedName]['factory'])
24 && $config[$requestedName]['factory'] === __CLASS__
25 && isset($config[$requestedName]['params'])
26 && isset($config[$requestedName]['params']['form'])
27 && isset($config[$requestedName]['params']['input_filter'])
28 && isset($config[$requestedName]['params']['form_search'])
29 && isset($config[$requestedName]['params']['input_filter_search'])
30 && isset($config[$requestedName]['params']['persistence']);
31 }
32
33 34 35
36 public function createServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName)
37 {
38
39 $config = $serviceLocator->get('Config')['balance_manager']['factories'][$requestedName];
40
41 $form = $serviceLocator->get('FormElementManager')->get($config['params']['form']);
42 $inputFilter = $serviceLocator->get('InputFilterManager')->get($config['params']['input_filter']);
43 $formSearch = $serviceLocator->get('FormElementManager')->get($config['params']['form_search']);
44 $inputFilterSearch = $serviceLocator->get('InputFilterManager')->get($config['params']['input_filter_search']);
45 $persistence = $serviceLocator->get($config['params']['persistence']);
46
47 $form->setInputFilter($inputFilter);
48 $formSearch->setInputFilter($inputFilterSearch);
49
50 return new Model($form, $formSearch, $persistence);
51 }
52 }
53