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);
}
}