Commit c45aa4fa authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Mise ne place de factories et de configs pour les aides de vues Vite et Vue

parent 729816a9
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -65,9 +65,13 @@ Enfin, commitez le tout et testez avant de déployer!!!

## Création de composants Vue

Ose embarque BootstrapVue.
A privilégier pour utiliser des composants Boottrap.

Sites officiels :
- https://vuejs.org/
- https://vitejs.dev/
- https://bootstrap-vue.org/

Doc Vue de Stéphane : 
- https://git.unicaen.fr/bouvry/presentation-dev/-/blob/master/src/vuejs.md
+8 −3
Original line number Diff line number Diff line
@@ -212,6 +212,8 @@ $config = [
            \UnicaenAuth\View\Helper\UserCurrent::class                => View\Helper\UserCurrentFactory::class,
            \UnicaenAuth\View\Helper\LocalConnectViewHelper::class     => View\Helper\LocalConnectViewHelperFactory::class,
            'tab'                                                      => View\Helper\TabViewHelperFactory::class,
            'vite'                                                     => View\Helper\ViteViewHelperFactory::class,
            'vue'                                                      => View\Helper\VueViewHelperFactory::class,
        ],
        'invokables' => [
            'utilisateur'     => View\Helper\UtilisateurViewHelper::class,
@@ -219,8 +221,6 @@ $config = [
            'formSupprimer'   => View\Helper\FormSupprimerViewHelper::class,
            'formButtonGroup' => View\Helper\FormButtonGroupViewHelper::class,
            'cartridge'       => View\Helper\CartridgeViewHelper::class,
            'vite'            => View\Helper\ViteViewHelper::class,
            'vue'             => View\Helper\VueViewHelper::class,
        ],
    ],
    'controllers'        => [
@@ -241,6 +241,11 @@ $config = [
        'template_map'        => include __DIR__ . '/../template_map.php',
        'layout'              => 'layout/layout', // e.g., 'layout/layout'
    ],
    'vite'               => [
        'host'        => 'http://localhost:5133',
        'vue-url'     => '/vendor/vue.js',
        'hot-loading' => \AppConfig::inDev() ? \AppConfig::get('dev', 'hot-loading') : false,
    ],
];

if ($customCss = \AppConfig::get('etablissement', 'css')) {
+14 −7
Original line number Diff line number Diff line
@@ -14,11 +14,22 @@ class ViteViewHelper extends AbstractHtmlElement
{
    private $config = [
        'host'   => 'http://localhost:5133',
        'vueUrl' => '/vendor/vue.js',
        'vue-url' => '/vendor/vue.js',
        'hot-loading' => true,
    ];



    /**
     * @param string[] $config
     */
    public function __construct(array $config)
    {
        $this->config = $config;
    }



    /**
     *
     * @return self|string
@@ -64,11 +75,7 @@ class ViteViewHelper extends AbstractHtmlElement

    public function useNode(): bool
    {
        if (\AppConfig::inDev()) {
            return \AppConfig::get('dev', 'hot-loading', true);
        } else {
            return false;
        }
        return $this->getConfig('hot-loading');
    }


@@ -93,7 +100,7 @@ class ViteViewHelper extends AbstractHtmlElement
    {
        $h = '';
        if ($this->useNode()) {
            $url = $this->getView()->basePath($this->getConfig('vueUrl'));
            $url = $this->getView()->basePath($this->getConfig('vue-url'));
            $h   = '<script type="text/javascript" src="' . $url . '"></script>';
        }
        $h .= $this->vite('main.js');
+41 −0
Original line number Diff line number Diff line
<?php

namespace Application\View\Helper;

use Psr\Container\ContainerInterface;


/**
 * Description of ViteViewHelperFactory
 *
 * @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
 */
class ViteViewHelperFactory
{

    /**
     * @param ContainerInterface $container
     * @param string             $requestedName
     * @param array|null         $options
     *
     * @return ViteViewHelper
     */
    public function __invoke(ContainerInterface $container, $requestedName, $options = null): ViteViewHelper
    {
        $config = $container->get('config');

        if (array_key_exists('vite', $config)) {
            $viteConfig = $config['vite'];
        } else {
            $viteConfig = [
                'host'        => 'http://localhost:5133',
                'vue-url'     => '/vendor/vue.js',
                'hot-loading' => true,
            ];
        }

        $viewHelper = new ViteViewHelper($viteConfig);

        return $viewHelper;
    }
}
 No newline at end of file
+30 −0
Original line number Diff line number Diff line
<?php

namespace Application\View\Helper;

use Application\View\Helper\VueViewHelper;
use Psr\Container\ContainerInterface;


/**
 * Description of VueViewHelperFactory
 *
 * @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
 */
class VueViewHelperFactory
{

    /**
     * @param ContainerInterface $container
     * @param string             $requestedName
     * @param array|null         $options
     *
     * @return VueViewHelper
     */
    public function __invoke(ContainerInterface $container, $requestedName, $options = null): VueViewHelper
    {
        $viewHelper = new VueViewHelper();

        return $viewHelper;
    }
}
 No newline at end of file