Maison > Questions et réponses > le corps du texte
Comment étendre le tiers dans la structure des répertoires de symfony2 ?
L'écrivez-vous vous-même dans le fournisseur ou existe-t-il un format de répertoire prescrit ?
Symfony1 propose un mode assistant. Symfony2 a-t-il également le même mécanisme ?
黄舟2017-05-16 16:47:49
J'ai collé du code directement à partir du document :
Pour étendre un certain bundle, il vous suffit de déclarer quel bundle est étendu via la méthode getParent() dans votre propre bundle. Ce qui suit utilise FOSUserBundle comme objet d'extension.
// src/Acme/UserBundle/AcmeUserBundle.php namespace Acme\UserBundle; use Symfony\Component\HttpKernel\Bundle\Bundle; class AcmeUserBundle extends Bundle { public function getParent() { return 'FOSUserBundle'; } }
L'extension d'un contrôleur est plus simple, il suffit d'hériter directement du contrôleur cible :
// src/Acme/UserBundle/Controller/RegistrationController.php namespace Acme\UserBundle\Controller; use FOS\UserBundle\Controller\RegistrationController as BaseController; class RegistrationController extends BaseController { public function registerAction() { $response = parent::registerAction(); // ... do custom stuff return $response; } }
En ce qui concerne d'autres éléments tels que les modèles, le routage, etc., quel que soit celui que vous souhaitez réutiliser ou réécrire, créez-le simplement dans votre propre bundle avec le même chemin de fichier.
Documentation : http://symfony.com/doc/current/cookbo...
MISE À JOUR1 :
Si vous souhaitez simplement ajouter du code tiers, conformément aux spécifications, il doit être placé chez les fournisseurs. Si votre code est conforme au PSR-0, le chargement automatique peut être réalisé, sinon vous devez l'ajouter dans l'application. /autoload.php Riga l'include correspondant.
Quant à savoir si le code étendu peut être utilisé globalement, cela dépend de l'appel et non de la définition. Pour faciliter la maintenance, vous pouvez résumer l'interface vous-même ou définir le service dans SF2.
Vous pouvez vous référer à la documentation du bundle sf2 et à Composer.