예제 #1
0
 /**
  * Build generators
  *
  * @param  State $state
  * @return void
  */
 public function build(State $state)
 {
     $model = $state->getFormFactoryModel();
     $generator = new ClassGenerator($model->getName());
     $generator->setImplementedInterfaces(['FactoryInterface']);
     $generator->addUse('Doctrine\\ORM\\EntityManager');
     $generator->addUse('DoctrineModule\\Stdlib\\Hydrator\\DoctrineObject');
     $generator->addUse('Zend\\ServiceManager\\FactoryInterface');
     $generator->addUse('Zend\\ServiceManager\\ServiceLocatorInterface');
     $generator->addUse('Zend\\Form\\Form');
     $generator->addUse('Zend\\Form\\Element');
     $generator->addUse('Zend\\InputFilter\\Factory');
     $generator->addUse('Zend\\InputFilter\\InputFilterInterface');
     $this->buildCreateService($generator, $state);
     $this->buildGetInputFilter($generator, $state);
     $model->setGenerator($generator);
 }
예제 #2
0
 protected function write(State $state, InputInterface $input, OutputInterface $output)
 {
     $writeState = new State($this->configWriter);
     $writeState->addModel($state->getFormFactoryModel());
     parent::write($writeState, $input, $output);
 }
예제 #3
0
    public function buildEditAction(ClassGenerator $generator, State $state)
    {
        $service = 'get' . $state->getServiceModel()->getClassName();
        $name = lcfirst($state->getEntityModel()->getClassName());
        $method = new MethodGenerator('editAction');
        $method->setDocBlock(new DocBlockGenerator('Show one entity'));
        $method->setBody(<<<EOF
            \$id = \$this->params()->fromRoute('id');
\${$name} = \$this->{$service}()->loadById(\$id);
/** @var Form \$form */
\$form = \$this->getServiceLocator()->get('{$state->getFormFactoryModel()->getServiceName()}');
\$form->bind(\${$name});

if (\$this->getRequest()->isPost()) {
    \$form->setData(\$this->params()->fromPost());
    if (\$form->isValid()) {
        \$this->{$service}()->save(\${$name});
        \$this->getEntityManager()->flush();

        \$this->flashMessenger()->addSuccessMessage('Saved');
        \$this->redirect()->toRoute('home');
    }
}

return array(
    'form' => \$form
);
EOF
);
        $generator->addMethodFromGenerator($method);
    }