Вы можете сделать это в .... промежуточном программном обеспечении сразу после вызова закрытия
/**
* @param Request $request
* @param \Closure $next
* @return Response
*/
public function handle(Request $request, \Closure $next)
{
//middleware logic
$response = $next($request); //dont return it
//post application/business logic here
return $response;
}
Редактировать из комментария @ceejayoz:
Вы можетеиспользуйте метод terminate()
в своем классе промежуточного программного обеспечения для запуска кода После того, что ответ был отправлен клиенту с условием, что ваш веб-сервер использует FastCGI.
public function handle(Request $request, \Closure $next)
{
//middleware logic
return $next($request); //dont return it
}
public function terminate($request, $response)
{
//post application/business logic here
//no need for return instruction
}
Edit 2 Для преобразования вывода json лучшим решением будет использование ResourceCollection
.
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\ResourceCollection;
class Product extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
$multiplier = $isUs?1.2:1;
return [
'price' = $this->price * $multiplier,
];
}
}
. В вашем контроллере используйте этот класс в качестве ответа для контроллера
public function show($productId)
{
return new \App\Http\Resources\Product(Product::find($productId));
}