Пользовательская консольная команда Symfony2

Я все еще новичок в Symfony. Я настроил демонстрацию некоторых компонентов, которые я написал в своем онлайн-портфолио, и я хочу, чтобы эти демонстрационные данные очищались каждые два часа. На моем веб-сервере я хочу установить задание cron следующим образом:

php app/console portfolio:wipe

Я создал app/src/MyFreelancer/PortfolioBundle/Command/WipeCommand.php (PortfolioBundle зарегистрирован в AppKernel.php) и вот его содержимое (точно скопировано из http://symfony.com/doc/current/cookbook/console/console_command.html и изменили пространство имен и имя команды).

<?php
namespace MyFreelancer\PortfolioBundle\Command;

use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;

class WipeCommand extends ContainerAwareCommand
{
    protected function configure()
    {
        $this
            ->setName('maintenance:greet')
            ->setDescription('Greet someone')
            ->addArgument('name', InputArgument::OPTIONAL, 'Who do you want to greet?')
            ->addOption('yell', null, InputOption::VALUE_NONE, 'If set, the task will yell in uppercase letters');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $name = $input->getArgument('name');
        if ($name) {
            $text = 'Hello '.$name;
        } else {
            $text = 'Hello';
        }

        if ($input->getOption('yell')) {
            $text = strtoupper($text);
        }

        $output->writeln($text);
    }
}
?>

Однако, когда я бегу

php app/console portfolio:wipe test

Вместо того, чтобы получить "Hello test", я получаю

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

Любая помощь будет оценена по достоинству.


person Magnanimity    schedule 11.10.2013    source источник


Ответы (1)


Имя вашей команды maintenance:greet, поэтому попробуйте вызвать ее с помощью php app/console maintenance:greet test

И для вашего задания cron не забудьте перейти в каталог Symfony2 перед вызовом php app/console. Вы также можете вызвать консоль с полным путем: php /var/www/where/is/symfony/app/console ...

person A.L    schedule 11.10.2013