Skip to content

Commit 6685a9b

Browse files
committed
Add --request --requests flags to make:controller --model=X
1 parent f0acffe commit 6685a9b

File tree

3 files changed

+64
-10
lines changed

3 files changed

+64
-10
lines changed

src/Illuminate/Routing/Console/ControllerMakeCommand.php

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ protected function buildModelReplacements(array $replace)
158158
}
159159
}
160160

161+
$replace = $this->buildFormRequestReplacements($replace, $modelClass);
162+
161163
return array_merge($replace, [
162164
'DummyFullModelClass' => $modelClass,
163165
'{{ namespacedModel }}' => $modelClass,
@@ -188,6 +190,56 @@ protected function parseModel($model)
188190
return $this->qualifyModel($model);
189191
}
190192

193+
/**
194+
* Build the model replacement values.
195+
*
196+
* @param array $replace
197+
* @param string $modelClass
198+
* @return array
199+
*/
200+
protected function buildFormRequestReplacements(array $replace, $modelClass)
201+
{
202+
$storeRequestClass = $updateRequestClass = 'Request';
203+
$namespace = 'Illuminate\\Http';
204+
205+
if ($this->option('requests')) {
206+
$storeRequestClass = 'Store' . class_basename($modelClass) . 'Request';
207+
$this->call('make:request', [
208+
'name' => $storeRequestClass,
209+
]);
210+
$updateRequestClass = 'Update' . class_basename($modelClass) . 'Request';
211+
$this->call('make:request', [
212+
'name' => $updateRequestClass,
213+
]);
214+
$namespace = 'App\\Http\\Requests';
215+
}
216+
if ($this->option('request')) {
217+
$storeRequestClass = $updateRequestClass = class_basename($modelClass) . 'Request';
218+
$this->call('make:request', [
219+
'name' => $storeRequestClass
220+
]);
221+
$namespace = 'App\\Http\\Requests';
222+
}
223+
224+
$namespacedRequests = $namespace . '\\' . $storeRequestClass . ';';
225+
if ($storeRequestClass != $updateRequestClass) {
226+
$namespacedRequests .= "\r\nuse " . $namespace . "\\" . $updateRequestClass . ";";
227+
}
228+
229+
return array_merge($replace, [
230+
'{{ storeRequest }}' => $storeRequestClass,
231+
'{{storeRequest}}' => $storeRequestClass,
232+
'{{ updateRequest }}' => $updateRequestClass,
233+
'{{updateRequest}}' => $updateRequestClass,
234+
'{{ namespacedStoreRequest }}' => $namespace . '\\' . $storeRequestClass,
235+
'{{namespacedStoreRequest}}' => $namespace . '\\' . $storeRequestClass,
236+
'{{ namespacedUpdateRequest }}' => $namespace . '\\' . $updateRequestClass,
237+
'{{namespacedUpdateRequest}}' => $namespace . '\\' . $updateRequestClass,
238+
'{{ namespacedRequests }}' => $namespacedRequests,
239+
'{{namespacedRequests}}' => $namespacedRequests,
240+
]);
241+
}
242+
191243
/**
192244
* Get the console command options.
193245
*
@@ -203,6 +255,8 @@ protected function getOptions()
203255
['model', 'm', InputOption::VALUE_OPTIONAL, 'Generate a resource controller for the given model.'],
204256
['parent', 'p', InputOption::VALUE_OPTIONAL, 'Generate a nested resource controller class.'],
205257
['resource', 'r', InputOption::VALUE_NONE, 'Generate a resource controller class.'],
258+
['request', null, InputOption::VALUE_NONE, 'Generate a FormRequest class.'],
259+
['requests', null, InputOption::VALUE_NONE, 'Generate FormRequest classes for store and update.'],
206260
];
207261
}
208262
}

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)