|
2 | 2 |
|
3 | 3 | namespace Mpociot\ApiDoc\Generators; |
4 | 4 |
|
| 5 | +use ReflectionClass; |
5 | 6 | use Illuminate\Routing\Route; |
6 | 7 | use Illuminate\Support\Facades\App; |
7 | 8 | use Illuminate\Support\Facades\Request; |
| 9 | +use Illuminate\Foundation\Http\FormRequest; |
8 | 10 |
|
9 | 11 | class LaravelGenerator extends AbstractGenerator |
10 | 12 | { |
@@ -34,7 +36,6 @@ public function processRoute($route, $bindings = [], $headers = [], $withRespons |
34 | 36 | $routeGroup = $this->getRouteGroup($routeAction['uses']); |
35 | 37 | $routeDescription = $this->getRouteDescription($routeAction['uses']); |
36 | 38 |
|
37 | | - |
38 | 39 | if ($withResponse) { |
39 | 40 | $response = $this->getRouteResponse($route, $bindings, $headers); |
40 | 41 | if ($response->headers->get('Content-Type') === 'application/json') { |
@@ -105,4 +106,41 @@ public function callRoute($method, $uri, $parameters = [], $cookies = [], $files |
105 | 106 |
|
106 | 107 | return $response; |
107 | 108 | } |
| 109 | + |
| 110 | + /** |
| 111 | + * @param string $route |
| 112 | + * @param array $bindings |
| 113 | + * |
| 114 | + * @return array |
| 115 | + */ |
| 116 | + protected function getRouteRules($route, $bindings) |
| 117 | + { |
| 118 | + list($class, $method) = explode('@', $route); |
| 119 | + $reflection = new ReflectionClass($class); |
| 120 | + $reflectionMethod = $reflection->getMethod($method); |
| 121 | + |
| 122 | + foreach ($reflectionMethod->getParameters() as $parameter) { |
| 123 | + $parameterType = $parameter->getClass(); |
| 124 | + if (! is_null($parameterType) && class_exists($parameterType->name)) { |
| 125 | + $className = $parameterType->name; |
| 126 | + |
| 127 | + if (is_subclass_of($className, FormRequest::class)) { |
| 128 | + $parameterReflection = new $className; |
| 129 | + $parameterReflection->setContainer(app()); |
| 130 | + // Add route parameter bindings |
| 131 | + $parameterReflection->query->add($bindings); |
| 132 | + $parameterReflection->request->add($bindings); |
| 133 | + |
| 134 | + if (method_exists($parameterReflection, 'validator')) { |
| 135 | + return app()->call([$parameterReflection, 'validator']) |
| 136 | + ->getRules(); |
| 137 | + } else { |
| 138 | + return app()->call([$parameterReflection, 'rules']); |
| 139 | + } |
| 140 | + } |
| 141 | + } |
| 142 | + } |
| 143 | + |
| 144 | + return []; |
| 145 | + } |
108 | 146 | } |
0 commit comments