doctrine2 zend-framework2 zend-form2

doctrine2 - Zend Framework 2 Doctrine 2 one-to-many casilla de verificación de hidratación



zend-framework2 zend-form2 (0)

Tengo un ManyToMany que rompí en ManyToOne relación OneToMany y ManyToOne . Quiero crear un formulario que tenga casillas de verificación en lugar de colección, y estoy usando el hidratador ''DoctrineObject'', pero no funciona y no sé qué está mal.

Eliminé de mi código debajo de todos los otros campos no relacionados.

Entidad de rol :

/** * @orm/Entity * @orm/Table(name="roles") */ class RolesEntity extends HemisEntity { /** * @orm/Id * @orm/Column(type="integer"); * @ORM/GeneratedValue(strategy="IDENTITY") */ protected $id; /** * @orm/Column(name="role_code",type="string") */ protected $roleCode; /** * @orm/OneToMany(targetEntity="RolesPermissionsEntity", mappedBy="role", cascade={"persist"}) */ protected $rolePermissions; public function __construct() { $this->rolePermissions = new ArrayCollection(); } public function setRolePermissions($rolePermissions) { $this->rolePermissions = $rolePermissions; return $this; } public function addRolePermissions(Collection $rolePermissions) { foreach ($rolePermissions as $rolePermission) { $rolePermission->setRole($this); $this->rolePermissions->add($rolePermission); } } public function removeRolePermissions(Collection $rolePermissions) { foreach ($rolePermissions as $rolePermission) { $rolePermission->setRole(null); $this->rolePermissions->removeElement($rolePermission); } } public function getRolePermissions() { return $this->rolePermissions; } }

La entidad de tabla ManyToMany ( tiene más campos y, por lo tanto, la rompí ):

/** * @orm/Entity * @orm/Table(name="roles_permissions") */ class RolesPermissionsEntity extends HemisEntity { /** * @orm/Id * @orm/Column(type="integer"); * @ORM/GeneratedValue(strategy="IDENTITY") */ protected $id; /** * @orm/ManyToOne(targetEntity="RolesEntity", inversedBy="rolePermissions") * @orm/JoinColumn(name="role_id", referencedColumnName="id") **/ protected $role; /** * @orm/ManyToOne(targetEntity="PermissionsEntity", inversedBy="permissionRoles") * @orm/JoinColumn(name="permission_id", referencedColumnName="id") **/ protected $permission; public function setRole($role) { $this->role = $role; return $this; } public function getRole() { return $this->role; } public function setPermission($permission) { $this->permission = $permission; return $this; } public function getPermission() { return $this->permission; } }

Mi forma se ve así :

class RoleForm extends Form implements InputFilterProviderInterface { public function __construct(ObjectManager $objectManager) { parent::__construct(''role''); $this->setHydrator(new DoctrineHydrator($objectManager)) ->setObject(new RolesEntity()); $this->add(array( ''type'' => ''Zend/Form/Element/Hidden'', ''name'' => ''id'' )); $this->add(array( ''type'' => ''Zend/Form/Element/Text'', ''name'' => ''roleCode'', ''options'' => array( ''label'' => ''Role Code'' ), )); $this->add(array( ''name'' => ''rolePermissions'', ''type'' => ''DoctrineModule/Form/Element/ObjectMultiCheckbox'', ''options'' => array( ''label'' => ''Permissions'', ''object_manager'' => $objectManager, ''target_class'' => ''Hemis/Fnd/PermissionsEntity'', ''property'' => ''permissionDesc'' ), )); $this->add(array( ''name'' => ''submit'', ''type'' => ''Submit'', ''attributes'' => array( ''value'' => ''Submit'', ), )); } public function getInputFilterSpecification() { return array( ''roleCode'' => array( ''required'' => false ), ''rolePermissions'' => array( ''required'' => true ) ); } }

El problema es que cuando vuelco el $role , no contiene ningún rolePermissions e incluso que se pasan de la forma simplemente no se hidratan en el objeto. Espero que mi pregunta sea clara.

¿Alguna idea acerca de lo que está mal con mi código o hay una mejor manera de hacerlo usando las casillas de verificación?