From b475d485b8922b7bc5cef90fc2a134d71df82919 Mon Sep 17 00:00:00 2001 From: Moamen Eltouny Date: Mon, 14 Feb 2022 18:04:35 +0200 Subject: [PATCH] fix toArray method --- src/Resources/Json/Resource.php | 8 +++--- src/Resources/Json/ResourceCollection.php | 30 ++++++++++++++++++----- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/Resources/Json/Resource.php b/src/Resources/Json/Resource.php index df6fdb8..7ac77e5 100644 --- a/src/Resources/Json/Resource.php +++ b/src/Resources/Json/Resource.php @@ -29,11 +29,11 @@ public function __construct($resource, ?string $message = null) * Create a new anonymous resource collection. * * @param mixed $resource - * @return \App\Jsonable\Resources\ResourceCollection + * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection */ - public static function collection($resource, ?string $message = null) + public static function collection($resource) { - return tap(new ResourceCollection($resource, $message ?? static::$message ?? null), function ($collection) { + return tap(new ResourceCollection($resource, static::class, static::$message ?? null), function ($collection) { if (property_exists(static::class, 'preserveKeys')) { $collection->preserveKeys = (new static([]))->preserveKeys === true; } @@ -48,6 +48,6 @@ public static function collection($resource, ?string $message = null) */ public function toResponse($request) { - return json()->success($this->resource->toArray(), static::$message ?? null); + return json()->success($this->toArray($request), static::$message ?? null); } } diff --git a/src/Resources/Json/ResourceCollection.php b/src/Resources/Json/ResourceCollection.php index f6527fb..7234ec9 100644 --- a/src/Resources/Json/ResourceCollection.php +++ b/src/Resources/Json/ResourceCollection.php @@ -3,6 +3,7 @@ namespace Pharaonic\Laravel\Jsonable\Resources\Json; use Illuminate\Http\Resources\Json\ResourceCollection as IlluminateResourceCollection; +use Illuminate\Http\Resources\Json\ResourceResponse; use Illuminate\Pagination\AbstractCursorPaginator; use Illuminate\Pagination\AbstractPaginator; use Illuminate\Support\Arr; @@ -10,17 +11,33 @@ class ResourceCollection extends IlluminateResourceCollection { /** - * Create a new resource instance. + * The name of the resource being collected. + * + * @var string + */ + public $collects; + + /** + * Response message + * + * @var string + */ + public static $message = null; + + /** + * Create a new anonymous resource collection. * * @param mixed $resource + * @param string $collects + * @param string|null $message * @return void */ - public function __construct($resource, ?string $message = null) + public function __construct($resource, $collects, ?string $message = null) { - parent::__construct($resource); + $this->collects = $collects; + self::$message = $message; - $this->resource = $this->collectResource($resource); - if ($message) $this->message = $message; + parent::__construct($resource); } /** @@ -33,8 +50,9 @@ public function toResponse($request) { if ($this->resource instanceof AbstractPaginator || $this->resource instanceof AbstractCursorPaginator) return $this->preparePaginatedResponse($request); + - return json()->success($this->resource->toArray(), $this->message ?? null); + return json()->success($this->toArray($request), static::$message ?? null); } /**