Helper en Laravel

Helpers en Laravel

¿Qué son los Helpers?

Helpers en Laravel son funciones globales que proporcionan una manera conveniente y eficiente para realizar tareas comunes en la programación con Laravel. Estas funciones están disponibles globalmente en cualquier parte de tu aplicación.

Grupos Principales de Helpers

Helpers de Rutas

  • route(): Genera una URL para una ruta nombrada.
  • url(): Genera una URL absoluta.
  • action(): Genera una URL para un controlador y método específicos.

Helpers de Strings

  • str_*: Varias funciones para manipular strings.
  • __(): Traduce el texto dado según tu localización.

Helpers de Arrays

  • array_*: Funciones para manipular arrays.
  • head(): Devuelve el primer elemento de un array.
  • last(): Devuelve el último elemento de un array.

Helpers de Vistas

  • view(): Genera una nueva vista.
  • response(): Crea una instancia de respuesta.

Helpers de URL

  • asset(): Genera una URL para un asset usando el esquema de URL actual.
  • secure_asset(): Genera una URL segura para un asset.

Helpers Generales

  • app(): Accede a la instancia del contenedor de servicios.
  • config(): Obtiene o establece valores de configuración.

Crear un helper

Creamos una carpeta en app:

app\helper

Facade Vs Helper

https://medium.com/@azimidev/laravel-facades-vs-helpers-understanding-the-differences-and-use-cases-007d41a1b257

Laravel Facades vs. Helpers: Understanding the Differences and Use Cases

img.png

When developing with Laravel, you’ll often come across two powerful tools: Facades and Helpers. Both are designed to simplify your code and make it more readable, but they serve different purposes and are used in different scenarios. In this article, we’ll explore what Laravel Facades and Helpers are, their differences, and when to use each.

What are Laravel Facades? Facades provide a “static” interface to classes that are available in the application’s service container. They allow you to call methods in a class without having to instantiate them, making your code cleaner and more concise.

Example: Using Facades

1
2
3
4
use Illuminate\Support\Facades\Cache;

Cache::put('key', 'value', $minutes);
$value = Cache::get('key');
Here, Cache is a facade that provides access to the caching service in Laravel.

1
2
3
$value = array_get($array, 'key', 'default');
$slug = str_slug('Laravel Facades vs Helpers');
$url = route('home');
Helpers are designed to be straightforward to use, offering quick solutions for common tasks.

Key Differences Implementation:

Facades: Act as static proxies to underlying classes in the service container. Helpers: Simple, procedural functions. Dependency Injection:

Facades: Work with Laravel’s service container, making it easier to manage dependencies and mock services in tests. Helpers: Do not support dependency injection, which can make testing more challenging. Readability and Intent:

Facades: This can make code more readable by clearly indicating, which service is being used. Helpers: Provide a quick and dirty way to perform tasks, which can sometimes lead to less readable code. When to Use Facades Dependency Injection: When you need to leverage dependency injection, especially in testing. Readability: When you want to make it clear which service is being utilized. Complex Logic: For more complex interactions with Laravel services. Example: Using a Facade in a Controller

1
2
3
4
5
6
use Illuminate\Support\Facades\Mail;

public function sendWelcomeEmail($user)
{
Mail::to($user->email)->send(new WelcomeEmail($user));
}

When to Use Helpers Simplicity: For simple tasks where dependency injection is not necessary. Quick Solutions: When you need a quick and straightforward solution. Performance: When you want to avoid the overhead of the service container. Example: Using Helpers in a Blade Template

1
2
<p>{{ ucfirst($user->name) }}</p>
<p>{{ route('profile', ['id' => $user->id]) }}</p>
Conclusion Both Facades and Helpers have their place in Laravel development. Understanding when to use each can help you write cleaner, more maintainable code. Use Facades when you need the power of the service container and dependency injection. Use Helpers for quick, simple tasks. By leveraging both appropriately, you can make the most out of Laravel’s features and improve your development workflow.

1 - Vistas

Helpers de Vistas en Laravel

¿Qué son los Helpers de Vistas?

Los helpers de vistas en Laravel son funciones que facilitan el manejo y la renderización de las vistas. Estos helpers permiten una interacción más simple y eficiente con las plantillas Blade del framework.

Cómo helper de vistas, tenemos la función view() de Laravel.

Este helper retorna una instancia de una vista .

Esta función no solo carga y retorna la vista especificada, sino que también permite el encadenamiento de métodos adicionales disponibles en la instancia del objeto de la vista .

Esto facilita la manipulación y personalización de la vista antes de que se envíe al navegador.

Principales Helpers de Vistas

view()

  • Genera una nueva vista.
  • Ejemplo: view('welcome', ['data' => $data]) carga la vista welcome con datos.

view()->make()

  • Similar a view(), pero con una sintaxis alternativa.
  • Ejemplo: view()->make('welcome', ['data' => $data]).

view()->exists()

  • Comprueba si una vista existe.
  • Ejemplo: view()->exists('welcome') devuelve true si la vista welcome existe.

view()->first()

  • Intenta renderizar la primera vista existente de una lista.
  • Ejemplo: view()->first(['custom', 'default']) carga la primera vista que exista entre custom y default.

view()->share()

  • Comparte una variable en todas las vistas.
  • Ejemplo: view()->share('key', 'value') hace que key esté disponible globalmente en todas las vistas.

view()->composer()

  • Asigna datos a una vista cada vez que se carga.
  • Ejemplo: view()->composer('welcome', function ($view) { ... }).

view()->creator()

  • Similar a view()->composer(), pero se ejecuta cuando la vista se crea.
  • Ejemplo: view()->creator('welcome', function ($view) { ... }).

Estos helpers son fundamentales para la gestión de vistas en Laravel, permitiendo un flujo de trabajo más ágil y una mayor flexibilidad en la renderización y el manejo de datos en las vistas.

  • Ejemplo: url()->previous()

2 - Rutas

Helpers de Laravel para Rutas

Laravel proporciona varios helpers útiles para trabajar con rutas.
Estos son algunos de los más importantes:

route('nombre_ruta')

  • Genera una URL para una ruta nombrada.
  • Podemos pasar parámetros a la ruta como un array asociativo [‘variable’=>valor]
route('user.profile', ['id' => 1]);

url('path')

  • Genera una URL absoluta para el path dado.
  • Ejemplo: url('/user')

redirect()->route('nombre_ruta')

  • Redirige a una ruta nombrada.
  • Ejemplo: redirect()->route('home')

action('NombreControlador@metodo')

  • Genera una URL para el controlador y método especificados.
  • Ejemplo: action('UserController@show', ['id' => 1])

back()

  • Redirige al usuario a la ubicación anterior.
  • Ejemplo: return back()

current()

  • Obtiene la URL actual.
  • Ejemplo: url()->current()

previous()

  • Obtiene la URL previa a la actual.
  • Ejemplo: url()->previous()

3 - Request en Laravel

Helpers y métodos para obtener datos de la Request en Laravel

En Laravel podemos acceder a los datos de la petición HTTP usando:

  • El helper global request()
  • La fachada Request (Illuminate\Support\Facades\Request)
  • Inyección de la clase Illuminate\Http\Request

A continuación, los métodos más usados:

request('clave')

  • Obtiene el valor de la clave indicada, buscando en GET, POST, JSON, etc.
  • Ejemplo:
    request('family_id');

request()->input('clave')

  • Equivalente a request('clave').
  • Ejemplo:
    request()->input('family_id');

request()->query('clave')

  • Obtiene el valor solo de la query string (?param=valor).
  • Ejemplo:
    request()->query('family_id');

request()->post('clave')

  • Obtiene el valor solo del cuerpo POST.
  • Ejemplo:
    request()->post('family_id');

request()->all()

  • Obtiene todos los datos de la petición (GET, POST, JSON, etc.)
  • Ejemplo:
    request()->all();

request()->only([...])

  • Obtiene solo las claves especificadas.
  • Ejemplo:
    request()->only(['name', 'email']);

request()->except([...])

  • Obtiene todos los datos excepto las claves indicadas.
  • Ejemplo:
    request()->except(['password']);

request()->has('clave')

  • Devuelve true si la clave existe (aunque esté vacía).
  • Ejemplo:
    request()->has('family_id');

request()->filled('clave')

  • Devuelve true si la clave existe y no está vacía.
  • Ejemplo:
    request()->filled('family_id');

request()->missing('clave')

  • Devuelve true si la clave no existe o es null.
  • Ejemplo:
    request()->missing('family_id');

request()->ajax()

  • Devuelve true si la petición es AJAX.
  • Ejemplo:
    request()->ajax();

request()->isJson()

  • Devuelve true si la petición es de tipo JSON.
  • Ejemplo:
    request()->isJson();

request()->method()

  • Devuelve el método HTTP (GET, POST, PUT…).
  • Ejemplo:
    request()->method();

request()->isMethod('metodo')

  • Comprueba si el método HTTP es el indicado.
  • Ejemplo:
    request()->isMethod('post');

request()->fullUrl()

  • Devuelve la URL completa con query string.
  • Ejemplo:
    request()->fullUrl();

request()->url()

  • Devuelve la URL sin query string.
  • Ejemplo:
    request()->url();

request()->path()

  • Devuelve solo el path de la URL.
  • Ejemplo:
    request()->path();

Uso con la fachada Request

Podemos hacer lo mismo usando la fachada:

use Illuminate\Support\Facades\Request;

Request::input('family_id');
Request::query('family_id');
Request::post('family_id');
Request::all();
Request::only(['name', 'email']);
Request::fullUrl();

📌 Nota: Tanto request() como Request usan internamente el mismo objeto Illuminate\Http\Request.


Tabla resumen de métodos principales

Método Origen de datos Descripción Ejemplo
request('clave') GET, POST, JSON Busca la clave en todos los datos de la petición request('id')
input('clave') GET, POST, JSON Igual que request('clave') request()->input('id')
query('clave') Query string (?param=) Solo busca en los parámetros de la URL request()->query('page')
post('clave') Cuerpo POST Solo busca en el contenido del formulario o cuerpo POST request()->post('email')
all() GET, POST, JSON Devuelve todos los datos request()->all()
only([...]) GET, POST, JSON Devuelve solo las claves indicadas request()->only(['name'])
except([...]) GET, POST, JSON Devuelve todos excepto las claves indicadas request()->except(['password'])
has('clave') GET, POST, JSON Existe la clave (aunque esté vacía) request()->has('name')
filled('clave') GET, POST, JSON Existe y tiene valor no vacío request()->filled('name')
missing('clave') GET, POST, JSON No existe o está vacía request()->missing('token')
ajax() Encabezado X-Requested-With Comprueba si la petición es AJAX request()->ajax()
isJson() Cabecera Content-Type Comprueba si es JSON request()->isJson()
method() Método HTTP Devuelve el método usado (GET, POST, etc.) request()->method()
isMethod('metodo') Método HTTP Comprueba si el método es el indicado request()->isMethod('post')
fullUrl() URL completa Devuelve la URL con query string request()->fullUrl()
url() URL base Devuelve la URL sin query string request()->url()
path() URL base Devuelve solo el path request()->path()