Eu sou novo no Laravel. Para tentar manter meu aplicativo organizado, gostaria de colocar meus controladores em subpastas da pasta do controlador.
controllers\
---- folder1
---- folder2
Tentei rotear para um controlador, mas laravel não o encontrou.
Route::get('/product/dashboard', 'folder1.MakeDashboardController@showDashboard');
O que estou fazendo de errado?
php artisan make:controller test\TestController
cria testTestController.php enquantophp artisan make:controller 'test\TestController'
funciona. (Observe as citações) - Laravel 5.4php artisan make:controller test/TestController
Adicione seus controladores em suas pastas:
Crie sua rota sem especificar a pasta:
Corre
E tente novamente
fonte
artisan dump-autoload
também precisa ou é ocomposer dump-autoload
suficiente?ClassLoader::addDirectories
que não tem no compositor, você também vai precisar de um artesão.composer dump-autoload
trabalhar para mim também. Se você usa o sistema operacional Windows, pode usar um arquivo .bat para executar, emcomposer dump-autoload
vez de digitar CMD todas as vezes. Isto é o que estou usando:PUSHD "E:\path\to\non-public" newline START /B "Window 1" composer dump-autoload newline pause
Para aqueles que usam Laravel 5, você precisa definir o namespace para o controlador dentro do subdiretório (o Laravel 5 ainda está em desenvolvimento e mudanças acontecem diariamente)
Para obter uma estrutura de pastas como:
arquivo Admin \ PostsController.php do namespace da seguinte forma:
Então, sua rota para isso é:
E por último, não para começar a fazer o dump de compositor ou artesão
ou
fonte
App\Http\Controllers\Auth\Controller
não encontrado, por que é anexar a palavraController
lá e perder o nome real do controlador? Eu acho que é a barra que está fazendo isso.-o
não ajudou.Para ** Laravel 5 ou Laravel 5.1 LTS **, se você tiver vários controladores na pasta Admin,
Route::group
será realmente útil para você. Por exemplo:Atualização : Funciona com Laravel 5.4
Estrutura da minha pasta:
PostAPIController:
Em My Route.php, eu defino o
namespace
grupo paraApi\V1
e, no geral, parece:Para obter detalhes sobre a movimentação para criar uma subpasta, visite este link .
fonte
1.crie sua subpasta exatamente como segue:
2. configure seu código em app / routes.php
3. escrever sth em app / controllers / admin / IndexController.php, por exemplo:
4. acesse seu site, por exemplo: localhost / admin / test, você verá "admin.home" na página
ps: Por favor, ignore meu pobre inglês
fonte
Acabei de encontrar uma maneira de fazer isso:
Basta adicionar os caminhos ao /app/start/global.php
fonte
Aqui, admin é o subdiretório sob app / Http / Controllers e CategoryController é o controlador que você deseja criar dentro do diretório
fonte
No Laravel 5.6, assumindo o nome de sua subpasta 'é
Api
:Em seu controlador, você precisa destas duas linhas:
E em seu arquivo de rota
api.php
, você precisa:fonte
Estou usando o Laravel 4.2. Aqui está como faço isso:
Eu tenho uma estrutura de diretório como esta:
app
--controllers
---- admin
------ AdminController.php
Depois de criar o controlador, coloquei no composer.json o caminho para o novo diretório de administração:
Em seguida eu corri
e depois
Então, no routes.php eu incluo o controlador assim:
E tudo funciona bem.
fonte
1) É assim que você pode tornar seu aplicativo organizado:
Cada arquivo de rota (
web.php
,api.php
...) é declarado em ummap()
método, em um arquivoAo mapear um arquivo de rota, você pode definir um
->namespace($this->namespace)
para ele, você o verá ali entre os exemplos.Significa que você pode criar mais arquivos para deixar seu projeto mais estruturado!
E defina namespaces diferentes para cada um deles.
Mas eu prefiro definir
empty string
para o namespace""
2) Você pode definir seus controladores para rotear em uma forma nativa de php, veja o exemplo:
Agora você pode clicar duas vezes nos nomes dos controladores em seu IDE para chegar lá de forma rápida e conveniente.
fonte
Se você estiver usando o Laravel 5.3 ou superior, não há necessidade de entrar em tanta complexidade como outras respostas disseram. Basta usar o comando artesão padrão para gerar um novo controlador. Por exemplo, se eu quiser criar um
User
controlador naUser
pasta. Eu iria digitarNas rotas,
fazer apenas isso seria bom e agora em localhost / painel é onde a página reside.
Espero que isto ajude.
fonte
Acho que para manter os controladores para Admin e Front em pastas separadas, o namespace funcionará bem.
Por favor, olhe a estrutura de diretório do Laravel abaixo, que funciona bem para mim.
As rotas no arquivo "routes / web.php" seriam as seguintes
E para a seção de administração, será semelhante a
Espero que isto ajude!!
fonte
Tive esse problema recentemente com o laravel 5.8, mas entendo e devo definir o controlador da maneira correta como segue:
Assim não:
Então você pode acessar o controlador em routes / web.php assim:
fonte