2013-10-11 2 views
2

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

php app/console portfolio:wipe 

я создал приложение/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 тест", я получаю

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

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

ответ

1

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

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

Смежные вопросы