В ZF2 у меня есть фабрика пользовательских форм. Он создает настраиваемый MultiCheckbox
и заполняет MultiCheckbox
значения и метки из запроса db.
class MyMultiCheckboxFactory { public function __invoke(FormElementManager $formElementManager) { $multiCheck = new \Zend\Form\Element\MultiCheckbox(); $serviceManager = $formElementManager->getServiceLocator(); $mapper = $serviceManager->get('Path\To\Mapper\To\Query\DB'); $descriptions = $mapper->findDescriptions($id); // some processing to prepare $value_options array $multiCheck->setOptions([ 'label' => 'blah-blah', 'value_options' => $value_options ]); return $multiCheck; } }
Моя проблема заключается в следующем. Метод findDescriptions($id)
зависит от $id
который я могу получить от маршрута. Но когда я использую MyMultiCheckbox
в форме:
public function init() { $this->add([ 'type' => 'Path\To\MyMultiCheckbox', 'name' => 'someName' ]); }
Я не знаю, как передать $id
в MyMultiCheckbox
.
Мог ли кто-нибудь помочь pleeeeeeeeeease?
Вы можете получить идентификатор с помощью экземпляра «соответствие маршрута» на заводе.
$event = $serviceManager->get('Application')->getMvcEvent(); $id = $event->getRouteMatch()->getParam('id', false); if (empty($id)) { throw new ServiceNotCreatedException('id not set!'); } $descriptions = $mapper->findDescriptions($id);