Controladores en Laravel

5/25
Recursos

Basados en el modelo MVC, vimos que las vistas las tenemos en resources/views, igualmente en la carpeta app/Http/Controllers podremos definir nuestros controladores.
Aunque podemos utilizar closures directamente dentro de las rutas, Laravel viene preparado para que trabajemos con controladores.

  • Cuando utilizamos el comando “artisan”, encontramos una sección llamada “make” que nos va a permitir crear diferentes cosas en el proyecto. make:controller nos crea un nuevo controlador.
  • En nuestro archivo web.php, en la parte de los parámetros, en vez de poner un closure vamos a poner el nombre del controlador que creamos seguido de una @ y finalizando el método que llamaremos de ese controlador.

Aportes 33

Preguntas 10

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Hola a todos, en caso uds al igual que yo instalan la version 2020 de Laravel la 8.11.2, les comento que la parte de crear una ruta utilizando en controlador ha cambiado, en la clase se ve asi:

Route::get('/', '[email protected]');

y en la version 8 lo maneja de esta forma

Route::get('/', [\App\Http\Controllers\HomeController::class, 'index']);

Como podemos ver Laravel en esta version nos pide que coloquemos la ruta de nuestro controlador, en caso contrario nos dira que el controlador no existe.

En caso que no les guste ver una ruta tan larga ya que muchas veces es necesario agregar codigo se puede hacer de la siguiente forma.

use App\Http\Controllers\HomeController;
Route::get('/', [HomeController::class, 'index']):

Les dejo la documentacion para corroborar, muchos exitos Saludos
https://laravel.com/docs/8.x/controllers

Les comparto una imagen del funcionamiento del Modelo-Vista-Controlador.

Me Encanto este comando…

php artisan make:controller PhotoController --resource

Pregunta, seria mejor usarlo en vagrant como en el curso php avanzado? en lo personal asi lo estoy usando

Es importante mantener el archivo de rutas web.php libre de código de lógica, este archivo debe estar siempre dedicado a rutas y únicamente rutas, precisamente para eso llegaron los controladores, para que pongas tu código de lógica ahí y no en las rutas 😄

Apuntes:
Cuando estamos trabajando con las vistas ubicadas en el archivo de vistas “routes/web.php”, se nos puede volver algo tedioso y de poco mantenimiento escribir tanto la vista como el closure, por ello es mas recomendable trabajar con los closures dentro de los controladores directamente.
Una buena manera de crear un controller, es a través del CMD con el comando php artisan, de la siguiente manera:

  • php artisan make:controller [nombreDelController]

Una vez creado el controller, creamos un método dentro (en este caso index()) para llamar a la vista, el cual quedaría de esta forma:
public function index()
{
return view(‘nombreDeLaVista’);
}

Por lo cual, en el archivo “web.php”, quedaría de la siguiente manera:
Route::get(’/’, ‘[email protected]’);

Laravel te ahorra mucho tiempo, me gusto el comando make controller

hola me aparece el siguiente error Illuminate\Contracts\Container\BindingResolutionException
Target class [HomeController] does not exist.
verifique las rutas y que este bien escrito todo pero sigue apareciendo.

Para detener php artisan serve en windows se usa la combinacion de teclas Ctrl+C

El profesor va directo al grano, es más práctico…

Excelente el uso del CLI artisan de Laravel

En laravel 8 y 9 web.php:

<?php

use App\Http\Controllers\DashboardController;
use App\Http\Controllers\HomeController;
use Illuminate\Support\Facades\Route;



Route::get('/', [HomeController::class, 'index']);

Route::get('/dashboard', [DashboardController::class, 'index']);

Senores tengo incoveniente con esto por favor si me pueden dar una mano.

Amo Laravel!

Excelente que funcione a la primera!

excelente como podemos observar pasamos rapidamente por el modelo vista controlador con este sencillo ejemplo, los controladores funcionado en conjunto con las rutas haciendo el llamado a las vistas!!! genial

se esta poniendo interesante la parte de controladores

Para las últimas versiones de php y laravel, cuando agreguen el return view en la función index del HomeController, deben omitir el “view:”. De lo contrario les generará un error.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    public function index() {
        return view('welcome');
    }
}

Las rutas son fundamentales en Laravel, si este no se tiene claro lo mejor no es seguir hasta entender lo que sigue.

Si alguien los esta haciendo con laravel 8 ó 9 el archivo web.php quedaría así:

Route::get('/',[HomeController::class, 'index']);

Route::get('/dashboard',[DashboardController::class, 'index']);

El curso está algo desactualizado. Deberían actualizar clases como estas, dado que la forma de crear las rutas a hoy, en noviembre de 2021, ha cambiado…

¿Siempre es necesario tras una actualización en el código ejecutar el comando
php artisan serve
?
Parece engorroso siempre ejecutarlo.

¿Se puede separar en otro archivo .php las funciones como para reutilizar en los controladores?. Como se haría

La mejor practica es ejecutar este comando
php artisan make:model Category -m -c -r
que aparte del modelo, crea la migracion y el controlador de tipo resource

Anotaciones: si estas haciendo este curso con la Versión 7 “o superior” de Laravel te recomiendo:

El comando:

php artisan -help

Ha cambiado, ahora puedes listar los comando con:

php artisan list

Excelente, entendi mejor el flujo de los datos con los controlladores.

¡Súper bien!

Hector ; Felicitaciones viejo, el concepto de Closure relacionado con una función anónima y la forma como lo explicas demuestra claridad en los conceptos y eso es muy importante a la hora de enseñar.

Conclusión: En el archivo web.php se crean las rutas y se redireccionan a los Controladores y desde ahí se cargan las Vistas.

😃

Route::get(’/’, ‘[email protected]’);
Route::get(‘index’, ‘[email protected]’);

Hay algo extraño que me pasa, que cuando utilizo el comando “php artisan serve” queda started de forma correcta, cuando ingreso desde el navegador se me muestra bien pero se reinicia el servidor y cambia de puerto hacia el siguiente. Es decir, inicia de la siguiente forma:

Laravel development server started: http://127.0.0.1:8000

Luego de acceder a la web desde el navegador aparece:

Laravel development server started: http://127.0.0.1:8001

¿Tienen idea qué puede ser? Googleé, pero nada.

Excelente!

Lo saque de los Patrones GOF

	**Applying the Model View Controller (MVC)**
		**Pattern**

• Model View Controller (MVC) pattern is an
architectural pattern
• MVC separates presentation management from core
application logic
• Useful in applications where the user interface might
frequently change
• MVC can be adapted to Web applications