Curso de PHP con Laravel

Curso de PHP con Laravel

H茅ctor Benitez

H茅ctor Benitez

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 鈥渁rtisan鈥, encontramos una secci贸n llamada 鈥渕ake鈥 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 鈥渞outes/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(鈥榥ombreDeLaVista鈥);
}

Por lo cual, en el archivo 鈥渨eb.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 鈥渙 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(鈥榠ndex鈥, 鈥[email protected]鈥);

Hay algo extra帽o que me pasa, que cuando utilizo el comando 鈥減hp 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