Команда создала проблему

У меня есть команда, которая уже находится в производстве, и я подозреваю, что она не работает. Разработчика, который работал над этим, больше нет. Поэтому я прихожу сюда, чтобы найти помощь.

Есть 2 вещи, которых я не понимаю.

1- Имя команды находится внутри папки контроллера... ApiController, но оно расширяет ContainerAwareCommand, поэтому я думаю, что это нормально...

2- Команда не найдена, но может быть связана с первым пунктом.

Когда я пытаюсь: php bin/console app:commandTest

У меня есть его ошибка в консоли:

There are no commands defined in the "app" namespace.

class ApiController extends ContainerAwareCommand
{


    protected function configure () {
        $this->setName('app:commandTest');
        $this->setDescription("Some desc");
        $this->setHelp("Some help");
    }

    public function execute(InputInterface $input, OutputInterface $output)
    { // whatever }
}

Люди сказали мне, что этот код работал, когда над ним работал предыдущий разработчик... но я не понимаю, как на самом деле. Надеюсь, вы видите, как это сделать или как заставить это работать. Спасибо.

Обновлено: что я пытался добавить в свои services.yaml, но это не работает

services:
    app.command.api_controller: 
        class: AppBundle\Controller\ApiController 
            arguments: ["%command.default_name%"] 
            tags: - { name: console.command }

config.yaml

imports:
    - { resource: services.yml }

Но при этом возникает ошибка

The file "/var/www/unitimmo/UniTimmo/app/config/services.yml" does not contain valid YAML

Существует ли служба, определенная для этого класса и помеченная console.command? Кажется возможным согласно документ

thomas.drbg 11.02.2019 13:15

Версия Симфони? Консольные команды Symfony — задокументировано здесь. Но важно, чтобы вы выбрали правильную версию в правом верхнем углу. Времена изменились. Наличие команды в каталоге контроллера (с использованием класса с префиксом контроллера) очень необычно.

Cerad 11.02.2019 13:31

@Cerad Symfony V4 thomas.drbg Я так не думаю, но не уверен. Я все-таки думал, что это автомат.

Minirock 11.02.2019 14:03

Опубликуйте строку пространства имен из вашей команды. Это на самом деле поможет сузить версию Symfony, в которой была написана команда. Я предполагаю, что это было не новое приложение, а скорее что-то, начавшееся с более ранней версии, а затем обновленное. Затем загляните в свой файл services.yaml и посмотрите, соответствует ли раздел по умолчанию symfony.com/doc/current/…. Если вы еще этого не сделали, очистите каталоги кеша.

Cerad 11.02.2019 14:08

пространство имен @Cerad AppBundle\Controller; На самом деле я думаю, что это Symfony 3.

Minirock 11.02.2019 14:13

Ага. AppBundle строго подразумевает проект Symfony 3. Возможно, у вас даже нет раздела по умолчанию, что, в свою очередь, означает, что автонастройка не включена, что, в свою очередь, означает, что ваша команда не будет автоматически помечена. Как предложил @thomas.drbg, вам, вероятно, потребуется вручную определить команду как службу и пометить ее.

Cerad 11.02.2019 14:17

@Cerad Я пытался добавить это в свой services.yaml... но ничего не меняется app.command.api_controller: class: AppBundle\Controller\ApiController arguments: ["%command.default_name%"] tags: - { name: console.command }

Minirock 11.02.2019 14:19

Рассмотрите возможность обновления вашего вопроса с определением вашего сервиса, так как комментарий не очень хорошо форматируется. Также включите любой раздел по умолчанию. Используйте «bin/console debug:container», чтобы определить, создается ли ваша служба. Может также включать любой конструктор, который есть у ApiController, поскольку внедрение имени команды по умолчанию очень необычно.

Cerad 11.02.2019 14:26

И если у вас есть каталог Command, подумайте о том, чтобы переместить туда файл и переименовать его в ApiCommand. В более старом коде все, что находится в каталоге Command, будет выбрано как команда.

Cerad 11.02.2019 14:28

@Cerad первое сообщение обновлено. К сожалению, у меня нет каталога команд ... если бы это был только я, я бы хотел снова правильно выполнить эту команду ...

Minirock 11.02.2019 14:46

Становимся ближе. Посмотрите внимательно здесь, чтобы понять, почему вы получаете сообщение об ошибке. Это легко исправить. Конечно, как только вы преодолеете эту ошибку, вы, вероятно, столкнетесь как минимум с еще одной ошибкой, связанной с использованием get для нулевого объекта. Печальная правда в том, что если эта команда раньше работала, значит, вы смотрите не на ту кодовую базу. Даже если вы получите эту команду для регистрации, у вас будет гораздо больше проблем.

Cerad 11.02.2019 14:51

Боже, я чувствую себя таким тупым прямо сейчас. На самом деле у меня была папка Site/Site... Так что я не был в хорошей папке, когда запускал команду... он не мог найти папку bin. Такой глупый :(

Minirock 11.02.2019 15:16

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

Cerad 11.02.2019 15:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
13
78
0

Другие вопросы по теме