Метод конструктора, унаследованный от другого класса, не видит мои дополнительные аргументы ⇐ Php
-
Anonymous
Метод конструктора, унаследованный от другого класса, не видит мои дополнительные аргументы
Я пишу веб-приложение на PHP в рамках Sylius. Я создал новый класс, который наследуется от встроенного в инфраструктуру класса ResourceController:
класс ResourceController расширяет \Sylius\Bundle\ResourceBundle\Controller\ResourceController Класс \Sylius\Bundle\...\ResourceController имеет метод-конструктор с 17 аргументами. В моем классе, который наследует этот класс, мне нужно добавить в конструктор три аргумента. Итак, мой код выглядит так:
публичный отправитель $sender; общественный ChannelContextInterface $channelContext; общественный LocaleContextInterface $localeContext; общественная функция __construct(MetadataInterface $metadata, RequestConfigurationFactoryInterface $requestConfigurationFactory, ?ViewHandlerInterface $viewHandler, RepositoryInterface $repository, FactoryInterface $factory, NewResourceFactoryInterface $newResourceFactory, ObjectManager $manager, SingleResourceProviderInterface $singleResourceProvider, ResourcesCollectionProviderInterface $resourcesFinder, Re sourceFormFactoryInterface $resourceFormFactory, RedirectHandlerInterface $redirectHandler, FlashHelperInterface $flashHelper, AuthorizationCheckerInterface $authorizationChecker, EventDispatcherInterface $eventDispatcher, ?StateMachineInterface $stateMachine, ResourceUpdateHandlerInterface $resourceUpdateHandler, ResourceDeleteHandlerInterface $resourceDeleteHandler, Sender $sender, ChannelContextInterface $channelContext, LocaleContextInterface $localeContext) { родитель::__construct($metadata, $requestConfigurationFactory, $viewHandler, $repository, $factory, $newResourceFactory, $manager, $singleResourceProvider, $resourcesFinder, $resourceFormFactory, $redirectHandler, $flashHelper, $authorizationChecker, $eventDispatcher, $stateMachine, $resourceUpdateHandler, $resourceDeleteHandler); $this->sender = $sender; $this->channelContext = $channelContext; $this->localeContext = $localeContext; } После запуска приложения у меня вылезла (Symfony) ошибка, хотя теоретически я ничего не пропускал (хотя, возможно, я ошибаюсь)
Слишком мало аргументов для функции App\Controller\Resource\ResourceController(), 17 передано [...] в строке 31, а ожидается ровно 20
Фрагмент файла _sylius.yaml:
sylius_customer: Ресурсы: клиент: классы: модель: Приложение\Сущность\Клиент\Клиент репозиторий: App\Repository\CustomerRepository контроллер: App\Controller\Resource\ResourceController И файл config/routes.yaml:
sylius_admin_customer_create: путь: /admin/customers/new методы: [GET,POST] значения по умолчанию: _controller: sylius.controller.customer::createAction Что я делаю не так?
Я пишу веб-приложение на PHP в рамках Sylius. Я создал новый класс, который наследуется от встроенного в инфраструктуру класса ResourceController:
класс ResourceController расширяет \Sylius\Bundle\ResourceBundle\Controller\ResourceController Класс \Sylius\Bundle\...\ResourceController имеет метод-конструктор с 17 аргументами. В моем классе, который наследует этот класс, мне нужно добавить в конструктор три аргумента. Итак, мой код выглядит так:
публичный отправитель $sender; общественный ChannelContextInterface $channelContext; общественный LocaleContextInterface $localeContext; общественная функция __construct(MetadataInterface $metadata, RequestConfigurationFactoryInterface $requestConfigurationFactory, ?ViewHandlerInterface $viewHandler, RepositoryInterface $repository, FactoryInterface $factory, NewResourceFactoryInterface $newResourceFactory, ObjectManager $manager, SingleResourceProviderInterface $singleResourceProvider, ResourcesCollectionProviderInterface $resourcesFinder, Re sourceFormFactoryInterface $resourceFormFactory, RedirectHandlerInterface $redirectHandler, FlashHelperInterface $flashHelper, AuthorizationCheckerInterface $authorizationChecker, EventDispatcherInterface $eventDispatcher, ?StateMachineInterface $stateMachine, ResourceUpdateHandlerInterface $resourceUpdateHandler, ResourceDeleteHandlerInterface $resourceDeleteHandler, Sender $sender, ChannelContextInterface $channelContext, LocaleContextInterface $localeContext) { родитель::__construct($metadata, $requestConfigurationFactory, $viewHandler, $repository, $factory, $newResourceFactory, $manager, $singleResourceProvider, $resourcesFinder, $resourceFormFactory, $redirectHandler, $flashHelper, $authorizationChecker, $eventDispatcher, $stateMachine, $resourceUpdateHandler, $resourceDeleteHandler); $this->sender = $sender; $this->channelContext = $channelContext; $this->localeContext = $localeContext; } После запуска приложения у меня вылезла (Symfony) ошибка, хотя теоретически я ничего не пропускал (хотя, возможно, я ошибаюсь)
Слишком мало аргументов для функции App\Controller\Resource\ResourceController(), 17 передано [...] в строке 31, а ожидается ровно 20
Фрагмент файла _sylius.yaml:
sylius_customer: Ресурсы: клиент: классы: модель: Приложение\Сущность\Клиент\Клиент репозиторий: App\Repository\CustomerRepository контроллер: App\Controller\Resource\ResourceController И файл config/routes.yaml:
sylius_admin_customer_create: путь: /admin/customers/new методы: [GET,POST] значения по умолчанию: _controller: sylius.controller.customer::createAction Что я делаю не так?
Мобильная версия