route resource php laravel laravel-5 laravel-routing

php - resource - ¿Cómo poner el controlador dentro de la carpeta en laravel 5.1.3?



route view laravel (6)

Soy nuevo en laravel. Estoy tratando de organizar mi controlador poniéndolo dentro de una carpeta, pero parece que no funciona.

Mi estructura de carpetas es así:

/app /Http /Controllers /Admin ShowDashboard.php

Mi archivo ShowDashboard.php es así:

<?php namespace App/Http/Controllers/Admin; use App/Http/Controllers/Controller; class ShowDashboard extends Controller { /** * Show the profile for the given user. * * @param int $id * @return Response */ public function init() { return ''Hi there!''; } }

Mi ruta es así

Route::get(''/admin'', ''Admin/ShowDashboard@init'');

Cuando ingresé a http: // localhost: 8000 / admin, recibí el siguiente error:

La aplicación de clase / Http / Controllers / Admin / ShowDashboard no existe

Mi sección autolaoder:

"autoload": { "classmap": [ "database" ], "psr-4": { "App//": "app/" } }

¿Me estoy perdiendo de algo?


El siguiente código está funcionando ... Pruébalo una vez

creó un archivo ShowDashboard.php en la carpeta admin como aplicación / http / controller

ahora, ShowDashboard.php

<?php namespace App/Http/Controllers/admin; use App/Http/Controllers/Controller; class ShowDashboard extends Controller { public function init() { return ''Hi there!''; } }

Se agregó Route::get(''admin'', ''admin/ShowDashboard@init''); en routes.php

y luego ejecuta la composer update en cmd .. Luego ejecuta http://localhost:8000/admin . dice ... ¡ Hola!


No sé por qué sucedió esto, pero agregar esto en mi ruta lo solucionó.

Route::group([''namespace'' => ''Admin''], function() { // Controllers Within The "App/Http/Controllers/Admin" Namespace Route::get(''/admin'',''ShowAdminDashboard@index''); });


No veo nada malo con lo que publicaste. Si cambió las asignaciones del espacio de nombres a la carpeta en composer.json, asegúrese de ejecutar el comando ''composer dump-autoload''.


La mejor forma de crear un controlador es usar la utilidad incorporada de Laravel, Artisan. Desde el símbolo del sistema, busque el directorio en el que se encuentra su proyecto laravel. Por ejemplo: c: / desarrollo / htdocs / www.ejemplo.dev

Cuando se le solicite, escriba: php artisan make: controller admin / showDashboard --plain

Esto generará un archivo llamado showDashboard.php dentro de un directorio de administración bajo sus controladores. El archivo tendrá el siguiente código por defecto:

<?php namespace App/Http/Controllers/admin; use Illuminate/Http/Request; use App/Http/Requests; use App/Http/Controllers/Controller; class showDashboard extends Controller { // }

Ahora que ha creado su controlador, agregue un método para init:

public function init() { return ''Hi there!''; }

Su controlador ahora se verá así:

<?php namespace App/Http/Controllers/admin; use Illuminate/Http/Request; use App/Http/Requests; use App/Http/Controllers/Controller; class showDashboard extends Controller { public function init() { return ''Hi there!''; } }

Ahora, configure su ruta en su routes.php de la siguiente manera:

route::get(''admin'', ''admin/showDashboard@init'');

Guarde su trabajo y abra su página. Al navegar a www.example.dev/admin, debería ver el mensaje: ¡Hola!

¡Espero que esto ayude!


Ya se ha explicado todo, pero se puede intentar una vez añadiendo el sufijo del controller a showDashboard y ejecutar el composer dump-autoload .

Creo que entonces tu controlador se ejecutará.

Cambie el nombre de su controlador ShowDashboardController


Cree un nuevo controlador en la subcarpeta, por ejemplo: app/Http/Controllers/User/UserController.php

En este controlador, al final del namespace de namespace debe incluir el nombre de la carpeta

Me gusta esto: namespace App/Http/Controllers/User;

Lo importante es que bajo el espacio de nombres debe escribir use App/Http/Controllers/Controller;

finalmente en routes.php Route::get ( ''/user'', ''User/UserController@login'' );

Contenido de UserController.php :

<?php namespace App/Http/Controllers/User; use App/Http/Controllers/Controller; class UserController extends Controller { public function login() { return ''this login''; } }

Contenido de routes.php :

Route::get ( ''/user/login'', ''User/UserController@login'' ); // or use this Route::group ( [ ''namespace'' => ''User'' ], function () { Route::get ( ''/user/login'', ''UserController@login'' ); } );