Dopo molto tempo, sono giunto a dichiarare dove ho trovato che il comando della console artigiano di Laravel 5.2 ha un bug o non è un bug poiché almeno un comando verrà eseguito in base alla corrispondenza iniziale del modello.
Lasciate assumere, si hanno due firme in due diversi file di comando come seguire 4 casi:
Caso I:
protected $signature = 'crawl:author-usa';
protected $signature = 'crawl:author-uk';
O Caso II:
protected $signature = 'crawl:authorusa';
protected $signature = 'crawl:authoruk';
O Caso III:
protected $signature = 'crawl-bq:author-usa';
protected $signature = 'crawl-bq:author-uk';
o il caso IV:
protected $signature = 'crawl-bq:authorusa';
protected $signature = 'crawl-bq:authoruk';
Per entrambi i casi, se si esegue il comando php artisan crawl:auther
poi per Caso I, mostrerà l'errore ambiguo come:
[Symfony\Component\Console\Exception\CommandNotFoundException] Command "crawl:author" is ambiguous (crawl:author-usa, crawl:author-uk).
Vi mostrerà la stessa ambigua messaggio per il resto 3 casi ma il testo saggio della firma sarebbe diverso.
Ora assumere la seguente firma per 4 casi diversi:
Caso I:
protected $signature = 'crawl:author-usa';
O Caso II:
protected $signature = 'crawl:authorusa';
O Caso III:
protected $signature = 'crawl-bq:author-usa';
O Caso IV:
protected $signature = 'crawl-bq:authorusa';
In entrambi i casi, se si esegue il comando php artisan crawl:auther
, verrà eseguito tale comando.
Per questi due scenari, sta accadendo a causa della funzione symfony/Cconsole find(). Qui il comando esatto viene cercato da questa espressione: crawl[^:]*[^:]*:author[^:]*[^:]*
. Ciò significa che, se ogni firma ha crawl<anything>:author<anything>
corrisponderà con php artisan crawl:author
Ora, se vengo alla soluzione di questo problema, in primo luogo ha bisogno di cambiare public function find($name)
vicino a 509 line all'indirizzo symfony/consle file. O se c'è la possibilità di sovrascrivere questa funzione (non sono sicuro di come si possa fare questo override).
Sono stato ispirato da @ Nadeem0035 in cui ha menzionato lo public function find($name)
vicino alla riga 509 al file symfony/consle. Sarei stato felice se potessi assegnare la taglia in termini di tempo di abbondanza, almeno perché mi ha mostrato un modo per trovare lo scenario esatto del comando della console. Questo è il motivo per cui un tizio con voto positivo :)
Hai rimosso il comando in app \ Console \ Kernel.php? Forse prova: 'php composer dump-autoload'. –
@ThomasVanderVeen Sì, e ho eseguito questo comando php composer dump-autoload un paio di volte. Anche io ho impostato il progetto un paio di volte eliminando la cartella del venditore. Ciò significa che dovevo eseguire l'aggiornamento di compositore e il dump-autoload del compositore. – naf4me
perché non usi un editor che ha una funzione di ricerca globale e cerchi il tuo progetto per "scrap: category" probabilmente ne hai ancora un residuo da qualche parte – tam5