recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment Symfony 2 étend les solutions tierces

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 ?

淡淡烟草味淡淡烟草味2872 Il y a quelques jours400

répondre à tous(1)je répondrai

  • 黄舟

    黄舟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.

    répondre
    0
  • Annulerrépondre