Saltar al contenido

Variable de retorno de Laravel Middleware al controlador

Te sugerimos que pruebes esta respuesta en un entorno controlado antes de enviarlo a producción, saludos.

Solución:

Creo que la forma correcta de hacer esto (en Laravel 5.x) es agregar sus campos personalizados al attributes propiedad.

De los comentarios del código fuente, podemos ver attributes se utiliza para parámetros personalizados:

 /**
 * Custom parameters.
 *
 * @var SymfonyComponentHttpFoundationParameterBag
 *
 * @api
 */
public $attributes;

Entonces implementaría esto de la siguiente manera;

$request->attributes->add(['myAttribute' => 'myValue']);

A continuación, puede recuperar la attribute llamando:

Request::get('myAttribute');

O desde el objeto de solicitud en laravel 5.5+

 $request->get('myAttribute');

En lugar de parámetros de solicitud personalizados, puede seguir el patrón de inversión de control y usar la inyección de dependencia.

En su middleware, registre su Page instancia:

app()->instance(Page::class, $page);

Luego declara que tu controlador necesita un Page instancia:

class PagesController 

    protected $page;

    function __construct(Page $page) 
    
        $this->page = $page;
    

Laravel resolverá automáticamente la dependencia e instanciará su controlador con el Page instancia que vinculó en su middleware.

En laravel >= 5 puedes usar $request->merge en el software intermedio:

public function handle($request, Closure $next)


    $request->merge(array("myVar" => "1234"));

    return $next($request);

Y en el controlador:

public function index(Request $request)


    $myVar = $request->instance()->query('myVar');
    ...

Aquí puedes ver las reseñas y valoraciones de los usuarios

Recuerda algo, que te damos el privilegio valorar este artículo si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *