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

Interface et trait HasIndicateur + viewhelper indicateurs

parent 8f28297b
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ use UnicaenIndicateur\Provider\Privilege\IndicateurPrivileges;
use UnicaenIndicateur\Service\Indicateur\IndicateurService;
use UnicaenIndicateur\Service\Indicateur\IndicateurServiceFactory;
use UnicaenIndicateur\View\Helper\DefaultItemViewHelper;
use UnicaenIndicateur\View\Helper\IndicateursViewHelperFactory;
use UnicaenIndicateur\View\Helper\IndicateurViewHelperFactory;
use UnicaenPrivilege\Guard\PrivilegeController;
use Laminas\Router\Http\Literal;
@@ -208,6 +209,7 @@ return [
        ],
        'factories' => [
            'indicateur' => IndicateurViewHelperFactory::class,
            'indicateurs' => IndicateursViewHelperFactory::class,
        ],
    ],
];
 No newline at end of file
+14 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenIndicateur\Entity\Db\Interface;

use UnicaenIndicateur\Entity\Db\Indicateur;

interface HasIndicateursInterface {

    public function getIndicateurs(): array;
    public function hasIndicateur(Indicateur $indicateur) : bool;
    public function addIndicateur(Indicateur $indicateur) : void;
    public function removeIndicateur(Indicateur $indicateur) : void;
    public function clearIndicateurs() : void;
}
+36 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenIndicateur\Entity\Db\Trait;

use Doctrine\Common\Collections\Collection;
use UnicaenIndicateur\Entity\Db\Indicateur;

trait HasIndicateursTrait {

    private Collection $indicateurs;

    public function getIndicateurs(): array
    {
        return $this->indicateurs->toArray();
    }

    public function hasIndicateur(Indicateur $indicateur) : bool
    {
        return $this->indicateurs->contains($indicateur);
    }

    public function addIndicateur(Indicateur $indicateur) : void
    {
        if (!$this->hasIndicateur($indicateur)) $this->indicateurs->add($indicateur);
    }

    public function removeIndicateur(Indicateur $indicateur) : void
    {
        if ($this->hasIndicateur($indicateur)) $this->indicateurs->removeElement($indicateur);
    }

    public function clearIndicateurs() : void
    {
        $this->indicateurs->clear();
    }
}
+28 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenIndicateur\View\Helper;

use Laminas\View\Helper\AbstractHelper;
use Laminas\View\Helper\Partial;
use Laminas\View\Renderer\PhpRenderer;
use Laminas\View\Resolver\TemplatePathStack;
use UnicaenIndicateur\Entity\Db\Indicateur;
use UnicaenIndicateur\Service\Indicateur\IndicateurServiceAwareTrait;

class IndicateursViewHelper extends AbstractHelper {
    use IndicateurServiceAwareTrait;

    /**
     * @param Indicateur[] $indicateurs
     * @param array $options
     * @return Partial|string
     */
    public function __invoke(array $indicateurs, array $options = []): Partial|string
    {
        /** @var PhpRenderer $view */
        $view = $this->getView();
        $view->resolver()->attach(new TemplatePathStack(['script_paths' => [__DIR__ . "/partial"]]));

        return $view->partial('indicateurs', ['indicateurs' => $indicateurs, 'options' => $options]);
    }
}
 No newline at end of file
+15 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenIndicateur\View\Helper;

use Psr\Container\ContainerInterface;

class IndicateursViewHelperFactory
{

    public function __invoke(ContainerInterface $container): IndicateursViewHelper
    {
        $helper = new IndicateursViewHelper();
        return $helper;
    }
}
 No newline at end of file
Loading