Wie Symfony 2 Lösungen von Drittanbietern erweitert
淡淡烟草味
淡淡烟草味 2017-05-16 16:45:49
0
1
366

Wie erweitert man den Drittanbieter in der Verzeichnisstruktur von Symfony2?
Schreiben Sie es selbst im Hersteller oder gibt es ein vorgeschriebenes Verzeichnisformat?
Symfony1 bietet einen Hilfsmodus. Verfügt Symfony2 auch über den gleichen Mechanismus?

淡淡烟草味
淡淡烟草味

Antworte allen(1)
黄舟

我直接从文档里粘来一些代码:

扩展某个bundle,只需要在你自己bundle里,通过getParent()方法,声明被扩展的bundle是哪个,下面就是以FOSUserBundle作为扩展对象。

// src/Acme/UserBundle/AcmeUserBundle.php
namespace Acme\UserBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class AcmeUserBundle extends Bundle
{
    public function getParent()
    {
        return 'FOSUserBundle';
    }
}

扩展某个Controller更加简单,直接继承目标Controller就好了:

// 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;
    }
}

至于其他的如模板、路由等,你要复用、重写哪一个,就在你自己的bundle里,以相同文件路径创建就好了。

文档:http://symfony.com/doc/current/cookbo...

UPDATE1:

如果你只是想要加第三方的代码进去,按规范是应该放vendors里,如果你的代码符合PSR-0,那就可以实现自动的加载;如果不符合,你要在app/autoload.php里加相应的include。

至于是否能够全局使用扩展后的代码,取决于调用,不取决于定义。为了维护的方便,你可以自己抽象interface,或者定义sf2里的service。

你可以参考下sf2的bundle的文档,以及Composer。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage