Buscar..


Introducción

En lugar de definir toda la lógica de manejo de su solicitud como cierres en archivos de ruta, es posible que desee organizar este comportamiento usando clases de controlador. Los controladores pueden agrupar la lógica de manejo de solicitudes relacionadas en una sola clase. Los controladores se almacenan en el directorio app/Http/Controllers de forma predeterminada.

Controladores básicos

<?php

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Show the profile for the given user.
     *
     * @param  int  $id
     * @return Response
     */
    public function show($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}

Puede definir una ruta a esta acción del controlador así:

Route::get('user/{id}', 'UserController@show');

Ahora, cuando una solicitud coincide con el URI de la ruta especificada, se ejecutará el método show en la clase UserController . Por supuesto, los parámetros de la ruta también se pasarán al método.

Controlador Middleware

Middleware puede asignarse a las rutas del controlador en sus archivos de ruta:

Route::get('profile', 'UserController@show')->middleware('auth');

Sin embargo, es más conveniente especificar middleware dentro del constructor de su controlador. Usando el método de middleware del constructor de su controlador, puede asignar fácilmente el middleware a la acción del controlador.

class UserController extends Controller
{
    /**
     * Instantiate a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');

        $this->middleware('log')->only('index');

        $this->middleware('subscribed')->except('store');
    }
}

Controlador de recursos

El enrutamiento de recursos de Laravel asigna las rutas "CRUD" típicas a un controlador con una sola línea de código. Por ejemplo, es posible que desee crear un controlador que maneje todas las solicitudes HTTP de "fotos" almacenadas por su aplicación. Con el comando make:controller Artisan, podemos crear rápidamente dicho controlador:

php artisan make:controller PhotoController --resource

Este comando generará un controlador en app/Http/Controllers/PhotoController.php . El controlador contendrá un método para cada una de las operaciones de recursos disponibles.

Ejemplo de cómo se ve un Controlador de Recursos

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PhotoController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

El ejemplo del controlador de recursos comparte el nombre del método de aquellos en la tabla a continuación.

A continuación, puede registrar una ruta con recursos para el controlador:

Route::resource('photos', 'PhotoController');

Esta declaración de ruta única crea múltiples rutas para manejar una variedad de acciones en el recurso. El controlador generado ya tendrá métodos de apéndice para cada una de estas acciones, incluidas las notas que le informarán sobre los verbos HTTP y los URI que manejan.

Acciones manejadas por el controlador de recursos

Verbo URI Acción Nombre de la ruta
OBTENER /photos índice fotos.index
OBTENER /photos/create crear fotos.crear
ENVIAR /photos almacenar fotos.tienda
OBTENER /photos/{photo} espectáculo fotos.muestra
OBTENER /photos/{photo}/edit editar fotos.editar
PUT / PATCH /photos/{photo} actualizar photos.update
BORRAR /photos/{photo} destruir fotos.destroy


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow