2014-09-30 13 views
5

Sto imparando come utilizzare Laravel 5 e ho riscontrato un problema in cui i controller vengono creati nella root della cartella "app" della cartella "controller". Non ho idea del perché questo sta accadendo in quanto sono stato installato e controllato 10 volte.Laravel 5 make: controller che crea controller nella cartella app anziché nella cartella controller

Sono in gitbash su Windows 8.1 ..

Così vado

[email protected] ~/desktop/code/my-first-app 
$ php artisan make:controller PagesController 

in tanto sono

controller creato con successo

solo è di essere creato nella radice di app e nulla nei controller cartella. Cosa mi manca? Vedo anche altri con lo stesso problema nei commenti sotto video su laracasts.

+0

Ho modificato la mia risposta. Si prega di guardarlo –

risposta

22

In Laravel 5, non è necessario specificare il percorso. Di default, genererà il controller nella directory.

Quindi, il controller può essere creato in questo modo:

php artisan make:controller controllerName 

Tuttavia, se si desidera creare in una directory personalizzata quindi fare riferimento alla linea di seguito:

php artisan make:controller pathName/controllerName 
+1

Ho appena provato il suggerimento di Vijay e creato pathNamecontrollerName. Tuttavia ho avuto successo con php artisan make: controller pathName \\ controllerName. –

+1

Puoi anche invertire la barra in modo che sia 'php artisan make: controller pathName/controllerName' – SnapShot

+0

sì downvote perché il consiglio 'directory personalizzata' è chiaramente sbagliato ed è stato errato per oltre 2 anni. Per creare un controller all'interno di una directory personalizzata è necessario 'php artisan make: controller DirectoryName/ControllerName' – goredwards

0

Sembra che ci sia un bug nella creazione dei controller.

L'ho verificato un minuto fa usando Laravel 5 che ho installato circa una settimana o due e funzionava perfettamente. Ma quando ho installato il nuovo Laravel 5 ora i controller sono creati nella cartella app/ e non in app/Http/Controllers.

Ma è anche possibile che gli sviluppatori abbiano cambiato idea in merito alla memorizzazione dei controller (Laravel 5 è ancora in fase di sviluppo).

Al momento nessuno lo sa, si potrebbe anche guardare Laracast discussion su questo problema.

Ciò che è strano non è possibile aggiungere manualmente il percorso a questo comando.

In laravel 4 si può fare:

php artisan controller:make --path="app/Controllers" PagesController 

ma in Laravel5 per controller:make si hanno meno opzioni di confronto per laravel 4, che sono:

Options: 
--plain    Generate an empty controller class. 
--help (-h)   Display this help message. 
--quiet (-q)   Do not output any message. 
--verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug 
--version (-V)  Display this application version. 
--ansi    Force ANSI output. 
--no-ansi    Disable ANSI output. 
--no-interaction (-n) Do not ask any interactive question. 
--env     The environment the command should run under. 

quindi non si può mettere qui percorso personalizzato o non generare alcuni metodi come in Laravel 4.

EDIT

Sembra che funzioni di nuovo come dovrebbe nel nuovo commit di Laravel 5. Quindi è necessario creare un nuovo progetto Laravel 5 o eseguire:

composer update 

per aggiornare il progetto.

Tuttavia probabilmente otterrete alcuni errori come ad esempio:

{ "errore": "il messaggio" "Symfony \ Component \ Debug \ Exception \ FatalErrorException":: { "type" "Classe 'Illuminate \ Routing \ FilterServiceProvider' non trovato", "file":

per rimuovere questi errori:

nel file di app/Providers/FilterServiceProvider.php cambiamento

use Illuminate\Routing\FilterServiceProvider as ServiceProvider; 

in:

use Illuminate\Foundation\Support\Providers\FilterServiceProvider as ServiceProvider; 

ed in file in file di app/Providers/RouteServiceProvider.php cambiamento

use Illuminate\Routing\RouteServiceProvider as ServiceProvider; 

in:

use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; 
0

fare un aggiornamento del compositore, e sarà di nuovo al normale .

+0

Ora sto ricevendo un errore in FilterServiceProvider.php sulla riga 5 quando provo a creare un controller o ad eseguire php artisan in generale. – user300979

2

Dopo aver provato php artisan make: controller Directory \ PageController, Laravel 5.1 creerebbe un controller chiamato DirectoryPageController nella mia directory app. La soluzione per me è stato quello di fuggire il backslash con un altro backslash quindi il seguente ha lavorato per me:

php artigianale marca: Controller Directory \\ PageController

laravel creato un Pagecontroller in app/Directory. Ho pensato di condividerlo con tutti.