relations onetomany one name manytomany many foreign column forms doctrine2 doctrine zend-framework2

forms - name - symfony doctrine onetomany



zend2 doctrine 2 form intgergration OneToOne (1)

Intento integrar Doctrine 2 en mi Zend 2 . Deseo unirme a dos entidades en mi formulario; es decir, ONeToOne.

Seguí el tutorial de gammamatrix .

Pude integrar la doctrina con éxito y pude hidrar una de las entidades.

El problema ocurre cuando trato de unir el segundo conjunto de campo de entidad a la primera entidad. Sigo recibiendo el siguiente mensaje de error fatal:

** Error fatal capturable: el argumento 1 pasó a Workers / Form / Fieldset / WorkerAddressFieldset :: __build () debe implementar la interfaz Doctrine / Common / Persistence / ObjectManager, ninguno dado, **

Comenzaré con los conjuntos de campo y le mostraré cómo traté de pasar el ObjectManager a ambos conjuntos de campo.

El primer fieldset: AboutYou (Este es el propietario en la relación);

Paso el ObjectManager a través del formulario en la página del controlador:

$form = new CreateAboutYouForm($this->getEntityManager());

La primera parte del código a continuación funciona solo. es decir, si no coloco el workeraddressfieldset en el código.

class AboutYouFieldset extends Fieldset implements InputFilterProviderInterface { public function __construct(ObjectManager $objectManager) { parent::__construct(''AboutYou''); $this->setHydrator(new DoctrineHydrator($objectManager, ''Workers/Entity/AboutYou'')) ->setObject(new AboutYou()); $this->add(array( ''name'' => ''firstName'', ''type'' => ''Text'', ''options'' => array( ''label'' => ''First Name'', ), )); $addressFieldset = new WorkerAddressFieldset($objectManager); $this->add(array( ''type'' => ''Workers/Form/Fieldset/workerAddressFieldset'', ''name'' => ''WorkerAddress'', ''options'' => array( ''label'' => $addressFieldset ) )); }

Notarás que creé un objeto workerAddressFieldset e intenté pasar el ObjectManager a la clase de esa manera. Pero parece que no recibe los valores. No estoy claro por qué.

El segundo fieldset (la dirección de los trabajadores):

class WorkerAddressFieldset extends Fieldset implements InputFilterProviderInterface { public function __construct(ObjectManager $objectManager) { parent::__construct(''WorkerAddress''); $this->setHydrator(new DoctrineHydrator($objectManager, ''Workers/Entity/WorkerAddress'')) ->setObject(new WorkerAddress()); }

Realmente agradecería algún consejo o una muestra de trabajo de cómo otros han podido unirse a los conjuntos de campo juntos.


Esto se debe a que intenta agregar Fieldset desde String. Dado el hecho de que su AddressFieldset tiene una __construct(ObjectManager $om) sin embargo, primero necesita crear una instancia del Fieldset y luego agregarlo a su formulario. Me gusta:

class AboutYouFieldset extends Fieldset { public function __construct(ObjectManager $objectManager) { parent::__construct(''about-you''); $this->add(); // your first element $fieldset = new WorkerAddressFieldset($objectManager); $this->add($fieldset); } }