maxpoitn2point
@maxpoitn2point
Как всегда, в своем репертуаре

Как использовать наследование Bundle для перезаписи частей 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';
    }
}


Возникает вопрос, собственно и все? Само наследование достигается строчкой "return 'FOSUserBundle';"
т.е. я так же могу наследовать и другие бандлы? просто указав return 'Свой какой-нибудь бандл';?

и еще нюанс, который меня интересует:
надо ли писать свои маршруты?
я так понимаю, если оставить все как есть и перейти, например, по /login будет срабатывать основной бандл и его контроллеры?

UPD
Если брать перезапись контроллера
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;
    }
}


тут понятно, что контроллер родитель относится к тому бандлу
  • Вопрос задан
  • 341 просмотр
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
касающиеся наследование бандлов.

не наследуйте бандлы. Да и вообще бандлы от лукавого, но все же AppBundle какой оставить можно. В остальных случаев бандлы должны быть жестко независимыми, ни от кого не наследоваться и просто регистрировать сервисы в систему.

Само наследование достигается строчкой "return 'FOSUserBundle';"

Да, таким образом вы говорите с каким еще экстеншеном ядра связан ваш экстеншен, тогда кернел будет обрабатывать все в нужном порядке.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы