Où créer des extensions personnalisées pour Magento2?

9

Certains articles encouragent à créer des extensions personnalisées dans app/codeet d'autres encouragent à les créer sous vendor. Ces deux méthodes conviennent-elles toutes les deux?

Et si je veux remplacer un module dans vendor? Dois-je écrire mon module personnalisé également dans le vendordossier ou app/code?

Agissent-ils comme des pools de codes comme dans Magento 1.x?

Veuillez clarifier le but de chaque annuaire.

Sukeshini
la source
Selon moi, nous devons le faire dans l'application / le code.
Arjun

Réponses:

7

Vous pouvez regarder les dossiers app/codeet vendorles codepools dans M1, mais ce ne sont pas vraiment des codepools.
Il n'y a pas de concept de "pool de codes" dans M1.

  • vendordossier est pour les modules que vous téléchargez via composer. Vous ne devez pas écrire de code dans ce dossier.
  • app/codeest votre terrain de jeu. Ajoutez vos propres extensions ici.

Si vous devez réécrire / étendre quelque chose dans le vendordossier, vous pouvez le faire dans le app/codedossier. Assurez-vous simplement de spécifier la dépendance logicielle dans le module.xmlmodule, de la même manière que vous l'avez fait dans M1 dans le app/etc/modules/Namespace_Module.xmlfichier.
La seule différence est qu'en m2, ce ne sont pas des dépendances. Ce sont des séquences.
De cette façon, votre module sera chargé après celui du vendordossier

Marius
la source
Pas tout à fait vrai. Si vous installez M2 via github app/coden'est pas un terrain de jeu;)
Raphael at Digital Pianism
@Marius: Merci beaucoup. Cela a dissipé le doute que j'avais. Si vous souhaitez remplacer le XMfichier L dans un module fournisseur, devons-nous encore mentionner les dépendances dans module.xml ?
Sukeshini
@RaphaelatDigitalPianism. Oui et non. Vous obtenez les modules de base app/codedans ce cas, mais vous pouvez toujours ajouter vos propres modules. Et la seule raison pour laquelle vous devez installer m2 via github est de jouer avec et / ou d'y contribuer. Donc, cela fait toujours techniquement app/codevotre terrain de jeu.
Marius
@Sukeshini. Je n'en suis pas sûr, mais je pense que vous devriez.
Marius
@Marius a accepté w / tout ce que vous avez dit que je viens de dire app/code/Vendorest votre terrain de jeu donc pas de risque de casser des trucs de base
Raphael au Digital Pianism
2

app/code est définitivement le bon endroit pour les modules de votre projet.

Vous ne devez jamais écrire de code à l'intérieur vendor(ce répertoire n'est pas ignoré dans votre contrôle de code source), car il est géré par composer uniquement et est dédié au module tiers ou au module que vous souhaitez réutiliser (et que vous avez publié sur packagist ou votre propre référentiel satis ).

Aurélien FOUCRET
la source