Commit a27dc23e authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Strategy pour les role parent

parent 702a13ff
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -228,7 +228,7 @@ abstract class AbstractRole implements RoleInterface
     * @param RoleInterface|null $parent
     * @return RoleInterface
     */
    public function setParent(RoleInterface $parent = null)
    public function setParent(?RoleInterface $parent = null)
    {
        $this->parent = $parent;

+4 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ use DoctrineModule\Validator\NoObjectExists;
use DoctrineModule\Validator\UniqueObject;
use UnicaenApp\Service\EntityManagerAwareTrait;
use UnicaenUtilisateur\Entity\Db\UserInterface;
use UnicaenUtilisateur\Form\Strategy\RoleParentStrategy;
use UnicaenUtilisateur\Service\Role\RoleServiceAwareTrait;
use Zend\Form\Element\Button;
use Zend\Form\Element\Checkbox;
@@ -79,6 +80,9 @@ class RoleForm extends Form
                'id' => 'parent',
            ],
        ]);
        $strategy = new RoleParentStrategy();
        $strategy->setRoleService($this->getRoleService());
        $this->getHydrator()->addStrategy('parent', $strategy);

        $this->add([
            'type' => Checkbox::class,
+33 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenUtilisateur\Form\Strategy;

use UnicaenUtilisateur\Service\Role\RoleServiceAwareTrait;
use Zend\Hydrator\Strategy\StrategyInterface;

class RoleParentStrategy implements StrategyInterface
{
    use RoleServiceAwareTrait;
    /**
     * {@inheritDoc}
     */
    public function extract($value)
    {
        if (null != $value) {
                return $value->getId();
        }
        return null;
    }

    /**
     * {@inheritDoc}
     */
    public function hydrate($value)
    {
        if ($value !== null AND trim($value) !== '') {
            $parent = $this->roleService->find($value);
            return $parent;
        }
        return null;
    }
}
 No newline at end of file