comment charger un module de site externe? J'ai un module commun que j'ai besoin de charger dans des sites Yii2 distincts, comme advanced-template mon idée est d'avoir un répertoire commun où stocker des modules génériques que je peux charger sur chaque site. Une structure de système de fichiers peut être comme ceci: / site-1/ (loads modules from common-modules dir for site-1) site-2/ (loads modules from common-modules dir for site-2) common_sites_modules/ module-1/ module-2/ carrello/ Carrello.php
Yii2 modules de chargement
Chaque site dans sa configuration doit charger des modules de common-modules/
Est-il possible d'implémenter cette structure?
Edit 1
La configuration:
'cart' => [ 'class' => dirname(dirname(dirname(__DIR__))) . '/common_sites_modules/carrello/Carrello', 'params' =>[ ... ], 'components' => [ ... ], ],
et ceci est la première ligne de la classe Carrello.php:
<?php namespace common_sites_modules\carrello; ...
La barre de éditeur avec le chemin de la classe et l'erreur retournée par Yii:
Edit 2:
Merci à @Yupik pour le soutien et suggère, les nouveaux paramètres:
bootstrap.php:
Yii::setAlias('@common-modules', dirname(dirname(dirname(__DIR__))) . '/common_sites_modules');
ma en local.php:
'class' => '@common-modules\carrello\Carrello',
L'erreur générée:
Comme suggéré dans les commentaires de la solution est de déclarer un alias, puis utiliser le nom d'alias pour l'appel du module. Comme suggéré par @Yupik je me suis fixé dans la commune/config/Bootstrap.php un alias comme suit:
Yii::setAlias('@common_modules', dirname(dirname(dirname(__DIR__))) . '/common_modules');
Dans la configuration principale:
'carrello' => [ 'class' => ''common_modules\carrello\Carrello', ... ]
Il est évident que l'espace de noms doivent être configuré en fonction de la position sur le système de fichiers. Merci pour les suggestions
Oui, c'est possible. – Yupik
Ok mais j'ai un problème pour charger le module, dans le paramètre 'class' de la configuration je définis le chemin absolu du module mais chaque fois que je reçois le' Class/var/www/html/common_sites_modules/mon-module/MyClass ne exist'exception quand un nouvel objet ReflectionClass a été généré avec le chemin, le chemin est correct alors pourquoi cette exception? – MarBer
Probablement parce que vous faites quelque chose de mal. Partagez le code, sinon nous ne pouvons pas vous aider. – Yupik