浏览代码

Fix crash when pagination not provided for transformer attribute

shalvah 2 年之前
父节点
当前提交
61e51d09a9
共有 1 个文件被更改,包括 7 次插入3 次删除
  1. 7 3
      src/Extracting/Strategies/Responses/UseResponseAttributes.php

+ 7 - 3
src/Extracting/Strategies/Responses/UseResponseAttributes.php

@@ -13,6 +13,7 @@ use Knuckles\Scribe\Extracting\ParamHelpers;
 use Knuckles\Scribe\Extracting\Shared\ApiResourceResponseTools;
 use Knuckles\Scribe\Extracting\Shared\TransformerResponseTools;
 use Knuckles\Scribe\Extracting\Strategies\PhpAttributeStrategy;
+use ReflectionClass;
 
 /**
  * @extends PhpAttributeStrategy<Response|ResponseFromFile|ResponseFromApiResource|ResponseFromTransformer>
@@ -75,11 +76,14 @@ class UseResponseAttributes extends PhpAttributeStrategy
 
     protected function getTransformerResponse(ResponseFromTransformer $attributeInstance)
     {
-        $modelInstantiator = fn() => $this->instantiateExampleModel($attributeInstance->model, $attributeInstance->factoryStates, $attributeInstance->with);
+        $modelInstantiator = fn() => $this->instantiateExampleModel(
+            $attributeInstance->model, $attributeInstance->factoryStates, $attributeInstance->with,
+            (new ReflectionClass($attributeInstance->name))->getMethod('transform')
+        );
 
-        $pagination = [
+        $pagination = $attributeInstance->paginate ? [
             'perPage' => $attributeInstance->paginate[1] ?? null, 'adapter' => $attributeInstance->paginate[0]
-        ];
+        ] : [];
         $this->startDbTransaction();
         $content = TransformerResponseTools::fetch(
             $attributeInstance->name, $attributeInstance->collection, $modelInstantiator,