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'' );
} );