Skip to content

Commit 10483fb

Browse files
committed
Merge branch 'PovilasKorop/8.x' into 8.x
2 parents 519365e + 8fbfc9f commit 10483fb

File tree

4 files changed

+81
-10
lines changed

4 files changed

+81
-10
lines changed

src/Illuminate/Foundation/Console/ModelMakeCommand.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ protected function createController()
136136
'name' => "{$controller}Controller",
137137
'--model' => $this->option('resource') || $this->option('api') ? $modelName : null,
138138
'--api' => $this->option('api'),
139+
'--requests' => $this->option('requests'),
139140
]));
140141
}
141142

@@ -208,6 +209,7 @@ protected function getOptions()
208209
['pivot', 'p', InputOption::VALUE_NONE, 'Indicates if the generated model should be a custom intermediate table model'],
209210
['resource', 'r', InputOption::VALUE_NONE, 'Indicates if the generated controller should be a resource controller'],
210211
['api', null, InputOption::VALUE_NONE, 'Indicates if the generated controller should be an API controller'],
212+
['requests', 'R', InputOption::VALUE_NONE, 'Create new form request classes and use them in the resource controller'],
211213
];
212214
}
213215
}

src/Illuminate/Routing/Console/ControllerMakeCommand.php

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ protected function buildModelReplacements(array $replace)
161161
}
162162
}
163163

164+
$replace = $this->buildFormRequestReplacements($replace, $modelClass);
165+
164166
return array_merge($replace, [
165167
'DummyFullModelClass' => $modelClass,
166168
'{{ namespacedModel }}' => $modelClass,
@@ -191,6 +193,72 @@ protected function parseModel($model)
191193
return $this->qualifyModel($model);
192194
}
193195

196+
/**
197+
* Build the model replacement values.
198+
*
199+
* @param array $replace
200+
* @param string $modelClass
201+
* @return array
202+
*/
203+
protected function buildFormRequestReplacements(array $replace, $modelClass)
204+
{
205+
[$namespace, $storeRequestClass, $updateRequestClass] = [
206+
'Illuminate\\Http', 'Request', 'Request',
207+
];
208+
209+
if ($this->option('requests')) {
210+
$namespace = 'App\\Http\\Requests';
211+
212+
[$storeRequestClass, $updateRequestClass] = $this->generateFormRequests(
213+
$modelClass, $storeRequestClass, $updateRequestClass
214+
);
215+
}
216+
217+
$namespacedRequests = $namespace.'\\'.$storeRequestClass.';';
218+
219+
if ($storeRequestClass !== $updateRequestClass) {
220+
$namespacedRequests .= PHP_EOL.'use '.$namespace.'\\'.$updateRequestClass.';';
221+
}
222+
223+
return array_merge($replace, [
224+
'{{ storeRequest }}' => $storeRequestClass,
225+
'{{storeRequest}}' => $storeRequestClass,
226+
'{{ updateRequest }}' => $updateRequestClass,
227+
'{{updateRequest}}' => $updateRequestClass,
228+
'{{ namespacedStoreRequest }}' => $namespace.'\\'.$storeRequestClass,
229+
'{{namespacedStoreRequest}}' => $namespace.'\\'.$storeRequestClass,
230+
'{{ namespacedUpdateRequest }}' => $namespace.'\\'.$updateRequestClass,
231+
'{{namespacedUpdateRequest}}' => $namespace.'\\'.$updateRequestClass,
232+
'{{ namespacedRequests }}' => $namespacedRequests,
233+
'{{namespacedRequests}}' => $namespacedRequests,
234+
]);
235+
}
236+
237+
/**
238+
* Generate the form requests for the given model and classes.
239+
*
240+
* @param string $modelName
241+
* @param string $storeRequestClass
242+
* @param string $updateRequestClass
243+
* @return array
244+
*/
245+
protected function generateFormRequests($modelClass, $storeRequestClass, $updateRequestClass)
246+
{
247+
$storeRequestClass = 'Store'.class_basename($modelClass).'Request';
248+
249+
$this->call('make:request', [
250+
'name' => $storeRequestClass,
251+
]);
252+
253+
$updateRequestClass = 'Update'.class_basename($modelClass).'Request';
254+
255+
$this->call('make:request', [
256+
'name' => $updateRequestClass,
257+
]);
258+
259+
return [$storeRequestClass, $updateRequestClass];
260+
}
261+
194262
/**
195263
* Get the console command options.
196264
*
@@ -206,6 +274,7 @@ protected function getOptions()
206274
['model', 'm', InputOption::VALUE_OPTIONAL, 'Generate a resource controller for the given model.'],
207275
['parent', 'p', InputOption::VALUE_OPTIONAL, 'Generate a nested resource controller class.'],
208276
['resource', 'r', InputOption::VALUE_NONE, 'Generate a resource controller class.'],
277+
['requests', 'R', InputOption::VALUE_NONE, 'Generate FormRequest classes for store and update.'],
209278
];
210279
}
211280
}

src/Illuminate/Routing/Console/stubs/controller.model.api.stub

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace {{ namespace }};
44

55
use {{ namespacedModel }};
66
use {{ rootNamespace }}Http\Controllers\Controller;
7-
use Illuminate\Http\Request;
7+
use {{ namespacedRequests }}
88

99
class {{ class }} extends Controller
1010
{
@@ -21,10 +21,10 @@ class {{ class }} extends Controller
2121
/**
2222
* Store a newly created resource in storage.
2323
*
24-
* @param \Illuminate\Http\Request $request
24+
* @param \{{ namespacedStoreRequest }} $request
2525
* @return \Illuminate\Http\Response
2626
*/
27-
public function store(Request $request)
27+
public function store({{ storeRequest }} $request)
2828
{
2929
//
3030
}
@@ -43,11 +43,11 @@ class {{ class }} extends Controller
4343
/**
4444
* Update the specified resource in storage.
4545
*
46-
* @param \Illuminate\Http\Request $request
46+
* @param \{{ namespacedUpdateRequest }} $request
4747
* @param \{{ namespacedModel }} ${{ modelVariable }}
4848
* @return \Illuminate\Http\Response
4949
*/
50-
public function update(Request $request, {{ model }} ${{ modelVariable }})
50+
public function update({{ updateRequest }} $request, {{ model }} ${{ modelVariable }})
5151
{
5252
//
5353
}

src/Illuminate/Routing/Console/stubs/controller.model.stub

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace {{ namespace }};
44

55
use {{ namespacedModel }};
66
use {{ rootNamespace }}Http\Controllers\Controller;
7-
use Illuminate\Http\Request;
7+
use {{ namespacedRequests }}
88

99
class {{ class }} extends Controller
1010
{
@@ -31,10 +31,10 @@ class {{ class }} extends Controller
3131
/**
3232
* Store a newly created resource in storage.
3333
*
34-
* @param \Illuminate\Http\Request $request
34+
* @param \{{ namespacedStoreRequest }} $request
3535
* @return \Illuminate\Http\Response
3636
*/
37-
public function store(Request $request)
37+
public function store({{ storeRequest }} $request)
3838
{
3939
//
4040
}
@@ -64,11 +64,11 @@ class {{ class }} extends Controller
6464
/**
6565
* Update the specified resource in storage.
6666
*
67-
* @param \Illuminate\Http\Request $request
67+
* @param \{{ namespacedUpdateRequest }} $request
6868
* @param \{{ namespacedModel }} ${{ modelVariable }}
6969
* @return \Illuminate\Http\Response
7070
*/
71-
public function update(Request $request, {{ model }} ${{ modelVariable }})
71+
public function update({{ updateRequest }} $request, {{ model }} ${{ modelVariable }})
7272
{
7373
//
7474
}

0 commit comments

Comments
 (0)