Soy nuevo en Laravel. Para intentar mantener mi aplicación organizada, me gustaría poner mis controladores en subcarpetas de la carpeta del controlador.
controllers\
---- folder1
---- folder2
Traté de enrutarme a un controlador, pero laravel no lo encuentra.
Route::get('/product/dashboard', 'folder1.MakeDashboardController@showDashboard');
¿Qué estoy haciendo mal?
php artisan make:controller test\TestController
crea testTestController.php mientras quephp artisan make:controller 'test\TestController'
funciona. (Tenga en cuenta las citas) - Laravel 5.4php artisan make:controller test/TestController
Agregue sus controladores en sus carpetas:
Crea tu ruta sin especificar la carpeta:
correr
E intenta de nuevo
fuente
artisan dump-autoload
tambien necesitas o escomposer dump-autoload
suficiente?ClassLoader::addDirectories
que no tienes sobre compositor, también necesitarás artesano.composer dump-autoload
trabaja para mí también. Si usa el sistema operativo Windows, puede usar un archivo .bat para ejecutar encomposer dump-autoload
lugar de escribir CMD cada vez. Esto es lo que estoy usando:PUSHD "E:\path\to\non-public" newline START /B "Window 1" composer dump-autoload newline pause
Para aquellos que usan Laravel 5, deben configurar el espacio de nombres para el controlador dentro del subdirectorio (Laravel 5 aún está en desarrollo y los cambios se realizan a diario)
Para obtener una estructura de carpetas como:
espacio de nombres Admin \ PostsController.php archivo así:
Entonces tu ruta para esto es:
Y por último, no te pongas a hacer volcado de compositor o artesano
o
fuente
App\Http\Controllers\Auth\Controller
no encontrado, ¿por qué se agrega la palabraController
allí y se pierde el nombre real del controlador? Creo que es la barra la que está haciendo eso.-o
no ayudó.Para ** Laravel 5 o Laravel 5.1 LTS ambos **, si tiene varios controladores en la carpeta de administración,
Route::group
será realmente útil para usted. Por ejemplo:Actualización : funciona con Laravel 5.4
Mi estructura de carpetas:
PostAPIController:
En My Route.php, configuro el
namespace
grupoApi\V1
y, en general, se ve así:Para obtener detalles de movimiento para crear subcarpetas, visite este enlace .
fuente
1.Cree su subcarpeta como sigue:
2.configure su código en app / routes.php
3.escribe algo en la aplicación / controllers / admin / IndexController.php, por ejemplo:
4. acceda a su sitio, por ejemplo: localhost / admin / test verá "admin.home" en la página
ps: por favor ignore mi pobre inglés
fuente
Acabo de encontrar una manera de hacerlo:
Simplemente agregue las rutas a /app/start/global.php
fuente
Aquí admin es el subdirectorio en app / Http / Controllers y CategoryController es el controlador que desea crear dentro del directorio
fuente
En Laravel 5.6, asumiendo que el nombre de su subcarpeta 'es
Api
:En su controlador, necesita estas dos líneas:
Y en su archivo de ruta
api.php
, necesita:fuente
Estoy usando Laravel 4.2. Así es como lo hago:
tengo una estructura de directorio como esta:
app
--controllers
---- admin
------ AdminController.php
Después de haber creado el controlador, puse en composer.json la ruta al nuevo directorio de administración:
Siguiente he corrido
y entonces
Luego, en routes.php tengo el controlador incluido así:
Y todo funciona bien.
fuente
1) Así es como puedes organizar tu aplicación:
Cada archivo de ruta (
web.php
,api.php
...) se declara en unmap()
método, en un archivoCuando mapee un archivo de ruta, puede configurar un archivo
->namespace($this->namespace)
para él, lo verá allí entre ejemplos.¡Significa que puede crear más archivos para estructurar su proyecto!
Y establezca diferentes espacios de nombres para cada uno de ellos.
Pero prefiero establecer
empty string
para el espacio de nombres""
2) Puede configurar sus controladores para que se enruten de una manera php nativa, vea el ejemplo:
Ahora puede hacer doble clic en los nombres de sus controladores en su IDE para llegar rápida y cómodamente.
fuente
Si está utilizando Laravel 5.3 o superior, no hay necesidad de entrar en tanta complejidad como han dicho otras respuestas. Simplemente use el comando artesanal predeterminado para generar un nuevo controlador. Por ejemplo, si quiero crear un
User
controlador en laUser
carpeta. Yo escribiríaEn rutas,
hacer solo esto estaría bien y ahora en localhost / dashboard es donde reside la página.
Espero que esto ayude.
fuente
Creo que para mantener los controladores para Admin y Front en carpetas separadas, el espacio de nombres funcionará bien.
Por favor, mire la estructura de directorios de Laravel a continuación, que funciona bien para mí.
Las rutas en el archivo "routes / web.php" serían las siguientes
Y para la sección de administración, se verá como
¡¡Espero que esto ayude!!
fuente
Tuve este problema recientemente con laravel 5.8 pero entiendo que debería definir el controlador de la manera correcta como esta a continuación:
Así no:
Luego puede acceder al controlador en route / web.php así:
fuente