2014-09-30 22 views
5

Uczę się używania Laravel 5 i natknąłem się na problem polegający na tym, że moje kontrolery są tworzone w katalogu głównym "aplikacji" folderu "kontroler". Nie mam pojęcia, dlaczego tak się dzieje, ponieważ zostałem ponownie zainstalowany i sprawdzony 10 razy.Laravel 5 make: kontroler tworzący kontroler w folderze aplikacji zamiast w folderze kontrolera

jestem w gitbash na Windows 8.1 ..

Więc idę

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

a potem dostać

kontroler stworzony powodzeniem

Tylko to jest utworzone w katalogu głównym app i nic w kontrolerach teczka. czego mi brakuje? Widzę też, że inni mają ten sam problem w komentarzach pod filmem pod numerem laracasts.

+0

Edytowałem swoją odpowiedź. Proszę spojrzeć na to –

Odpowiedz

22

W Laravel 5, nie jest wymagane określenie ścieżki. Domyślnie wygeneruje kontroler w katalogu.

Tak, kontroler może być tworzone tak:

php artisan make:controller controllerName 

Jednakże, jeśli chcesz go utworzyć w katalogu niestandardowym następnie odwołać się do linii poniżej:

php artisan make:controller pathName/controllerName 
+1

Właśnie wypróbowałem sugestię Vijay i utworzyłem pathNamecontrollerName. Jednak odniosłem sukces dzięki php artisan make: controller pathName \\ controllerName. –

+1

Możesz również odwrócić ukośnik tak, aby był to 'php rzemieślnik: nazwa ścieżki kontrolera/kontrolera \" – SnapShot

+0

tak, ponieważ rada "katalogu niestandardowego" jest wyraźnie błędna - i była błędna przez ponad 2 lata. Aby utworzyć kontroler w niestandardowym katalogu, potrzebujesz 'php rzemieślnika make: controller DirectoryName/ControllerName' – goredwards

0

Wygląda na błąd podczas tworzenia kontrolerów.

Sprawdziłem to minutę temu, używając Laravel 5 Zainstalowałem około tygodnia lub dwóch i wszystko działało dobrze. Ale kiedy zainstalowałem nową wersję Laravel 5, teraz kontrolery są tworzone w folderze app/, a nie w app/Http/Controllers.

Ale możliwe jest również, że programiści zmienili zdanie, gdzie będą przechowywane kontrolery (Laravel 5 jest nadal w fazie rozwoju).

W tej chwili nikt nie wie, że można również spojrzeć na Laracast discussion na temat tego problemu.

Co równie dziwne, nie można ręcznie dodać ścieżki do tego polecenia.

W laravel 4 można zrobić:

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

ale w Laravel5 dla controller:make masz mniej opcji w porównaniu do laravel 4, są to:

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. 

więc nie można umieścić tutaj zwyczaj ścieżka lub nie generuj niektórych metod, jak to możliwe w Laravel 4.

EDYTOWANIE

Wygląda na to, że działa on tak jak powinien w najnowszym zatwierdzeniu Laravel 5. Powinieneś więc albo stworzyć nowy projekt Laravel 5, albo uruchomić:

zaktualizować projekt.

Jednak prawdopodobnie będzie trochę błędów, jak na przykład:

{ "error": { "type": "Symfony \ Komponent \ Debug \ Wyjątek \ FatalErrorException", "message": "Klasy 'Illuminate \ Routing \ FilterServiceProvider' nie znaleziono”, "plik":

usunąć te błędy:

w pliku app/Providers/FilterServiceProvider.php zmiany

use Illuminate\Routing\FilterServiceProvider as ServiceProvider; 

do:

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

w pliku w pliku app/Providers/RouteServiceProvider.php zmiany

use Illuminate\Routing\RouteServiceProvider as ServiceProvider; 

do:

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

Wykonaj aktualizację kompozytor, i to będzie z powrotem do normalności .

+0

Otrzymuję teraz błąd w FilterServiceProvider.php na linii 5, gdy próbuję zrobić kontroler lub uruchomić php rzemieślnika w ogóle. – user300979

2

Po wypróbowaniu php rzemieślnik: kontroler Directory \ PageController, Laravel 5.1 utworzyłby kontroler o nazwie DirectoryPageController w moim katalogu aplikacji. Rozwiązaniem dla mnie było do ucieczki backslash z innym backslashem zatem następujące pracował dla mnie:

php rzemieślnik Producent: kontroler katalog \\ PageController

laravel stworzył PageController w app/Directory. Pomyślałem, że podzielę się z każdym.