2013-04-17 8 views
10

ho creato una nuova classe nel src/CollaboratorsBundle/comando denominato esso GenerateFormRemindersCommand.php e mettere il seguente codice in esso:comando di Symfony2 console personalizzata appare come "non definito" al momento dell'esecuzione

<?php 
namespace Myproject\CollaboratorsBundle\Command; 

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

class GenerateFormRemindersCommand extends ContainerAwareCommand{ 

    protected function configure() { 
     $this->setName("generate:formReminders") 
      ->setDescription('Send reminders by email to all collaborators with unanswered forms'); 
    } 

    protected function execute(InputInterface $input, OutputInterface $output) { 
     //some code 
    } 
} 

Al momento dell'esecuzione, ricevo il seguente messaggio:

$ php app/console generate:formReminders 
[InvalidArgumentException] 
Command "generate:formReminders" is not defined. 

Ho controllato nel mio file AppKernel.php che il mio pacchetto è stato registrato ed è stato.

Ho provato ad aggiungere genitore: configure(); al metodo configure ma senza risultati.

Ho creato alcuni altri comandi personalizzati che funzionano correttamente. Non capisco cosa sto sbagliando in questo caso. Fai ?

Grazie in anticipo

risposta

48

ho avuto lo stesso problema, perché ho chiamato file senza il suffisso "Comando". Devi nominare il tuo file come 'GenerateFormRemindersCommand.php'.

+4

Non hai idea di quanto sia giusta questa risposta. Sheesh. Ho appena finito mezz'ora di frustrazione per me. –

+0

@ Jarrod, sì, ha trascorso anche circa un'ora. E ancora non capisco perché questo suffisso 'Comando' sia richiesto anche se c'è uno spazio dei nomi speciale per tutti i comandi. –

+0

ecco un riferimento dal sito web di symfony che dice esattamente questo: http://symfony.com/doc/current/cookbook/console/console_command.html#automatically-registering-commands – syss

1

Non hai inserito il file nella posizione corretta.

Osservando il codice e lo spazio dei nomi utilizzati, come già accennato, è stato inserito il file all'interno di src/CollaboratorsBundle/Command. Mentre deve essere inserito all'interno di src/Myproject/CollaboratorsBundle/Command.

2

Ho avuto lo stesso errore. Il problema che ho avuto è stato l'implementazione del costruttore per inizializzare un campo repository invece del metodo initialize().

Problemi correlati