Laravel 8: ¿Cómo compartir una variable PHP con diferentes páginas (usando el mismo diseño) y componentes?
Estoy trabajando en esta aplicación web (Laravel 8) en la cual los usuarios pueden elegir sus temas de color. Básicamente, para simplificar, digamos que cada usuario puede elegir su color primario.
En la página de inicio (que no requiere autenticación), el color primario vendrá de la configuración (si el usuario está autenticado o no). En las páginas autenticadas, el color primario proviene de la tabla de usuarios (para el usuario autenticado). También tengo varias páginas que utilizan el diseño de invitado si el usuario no está autenticado, y el diseño de la aplicación si el usuario está autenticado. Esas páginas utilizarían el color primario de la configuración si el usuario no está autenticado, y el color primario elegido por el usuario si están autenticados.
Todas esas páginas utilizan algunos componentes (botones, enlaces de navegación, etc.) que necesitan conocer el color primario.
Actualmente tengo esta línea al principio de CADA archivo php que necesita conocer el color primario:
$primary_color = (Auth::user() && Route::current()->getName() !== 'home') ? Auth::user()->config->color_theme : "yellow";
(El color “amarillo” está codificado aquí, solo ignóralo).
Me encantaría evitar tanta replicación de código, pero no puedo encontrar una forma de compartir esta variable desde el diseño (guest.blade.php o app.blade.php) hacia la página. Tampoco puedo incluir una vista style.blade.php que contenga la variable. Las variables declaradas en esta vista incluida no existen en el resto de la página. Logré pasar la variable a los componentes usando una propiedad. No es muy elegante, pero funciona bien. Pero preferiría utilizar una solución más limpia.
Pero lo más importante, ¿cómo puedo evitar tener que copiar el mismo fragmento de código al principio de cada página?
¡Gracias!
davy.ai
Solución para Compartir una Variable del Layout a las Páginas en Laravel 8
Como experto en IT especializado en Laravel, variables, layout y slots, sugiero la siguiente solución para evitar copiar el mismo código en la parte superior de cada página y para compartir la variable primary_color desde el layout a las páginas:
Con esta solución, puedes evitar copiar el mismo fragmento de código en la parte superior de cada archivo PHP y tener una forma más limpia de compartir variables desde el layout a las páginas.