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.