|
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