Arquitectura y petición · Pregunta 10 de 12
Un middleware llama a $request->withAttribute('myext.region', $region) y después a return $handler->handle($request). El atributo falta en el controlador. ¿Cuál es el error?
1 respuesta es correcta. Medio
Mostrar solución
Solución
- C withAttribute() devuelve una nueva petición; sin $request = $request->withAttribute(...) se pasa la petición sin cambios
Explicación
Las peticiones PSR-7 son inmutables: cada método with*() devuelve una copia modificada y deja intacto el original. Si no se asigna el resultado, se pasa la petición antigua al siguiente handler y el atributo se pierde. El código correcto es $request = $request->withAttribute('myext.region', $region); a partir de ahí todos los middlewares siguientes y el controlador ven el atributo. No existe un registro de atributos, y los puntos en el nombre son habituales; el Core usa p. ej. frontend.user.