Skip to content

Commit 07886c5

Browse files
[9.x] Add Route::singleton() method (#44872)
* Add `Route::singleton()` method * Remove singleton methods that don't work in this context * Add route singleton methods to facade docblock * Formatting * add stubs * publish stubs * add creatable method * add file * update stubs * add creatable flag Co-authored-by: Taylor Otwell <[email protected]>
1 parent 99aede0 commit 07886c5

15 files changed

+1114
-5
lines changed

src/Illuminate/Foundation/Console/StubPublishCommand.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,12 @@ public function handle()
8383
realpath(__DIR__.'/../../Routing/Console/stubs/controller.model.api.stub') => $stubsPath.'/controller.model.api.stub',
8484
realpath(__DIR__.'/../../Routing/Console/stubs/controller.model.stub') => $stubsPath.'/controller.model.stub',
8585
realpath(__DIR__.'/../../Routing/Console/stubs/controller.nested.api.stub') => $stubsPath.'/controller.nested.api.stub',
86+
realpath(__DIR__.'/../../Routing/Console/stubs/controller.nested.singleton.api.stub') => $stubsPath.'/controller.stub',
87+
realpath(__DIR__.'/../../Routing/Console/stubs/controller.nested.singleton.stub') => $stubsPath.'/controller.stub',
8688
realpath(__DIR__.'/../../Routing/Console/stubs/controller.nested.stub') => $stubsPath.'/controller.nested.stub',
8789
realpath(__DIR__.'/../../Routing/Console/stubs/controller.plain.stub') => $stubsPath.'/controller.plain.stub',
90+
realpath(__DIR__.'/../../Routing/Console/stubs/controller.singleton.api.stub') => $stubsPath.'/controller.stub',
91+
realpath(__DIR__.'/../../Routing/Console/stubs/controller.singleton.stub') => $stubsPath.'/controller.stub',
8892
realpath(__DIR__.'/../../Routing/Console/stubs/controller.stub') => $stubsPath.'/controller.stub',
8993
realpath(__DIR__.'/../../Routing/Console/stubs/middleware.stub') => $stubsPath.'/middleware.stub',
9094
];

src/Illuminate/Routing/Console/ControllerMakeCommand.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,15 @@ protected function getStub()
5757
if ($type = $this->option('type')) {
5858
$stub = "/stubs/controller.{$type}.stub";
5959
} elseif ($this->option('parent')) {
60-
$stub = '/stubs/controller.nested.stub';
60+
$stub = $this->option('singleton')
61+
? '/stubs/controller.nested.singleton.stub'
62+
: '/stubs/controller.nested.stub';
6163
} elseif ($this->option('model')) {
6264
$stub = '/stubs/controller.model.stub';
6365
} elseif ($this->option('invokable')) {
6466
$stub = '/stubs/controller.invokable.stub';
67+
} elseif ($this->option('singleton')) {
68+
$stub = '/stubs/controller.singleton.stub';
6569
} elseif ($this->option('resource')) {
6670
$stub = '/stubs/controller.stub';
6771
}
@@ -123,6 +127,10 @@ protected function buildClass($name)
123127
$replace = $this->buildModelReplacements($replace);
124128
}
125129

130+
if ($this->option('creatable')) {
131+
$replace['abort(404);'] = '//';
132+
}
133+
126134
$replace["use {$controllerNamespace}\Controller;\n"] = '';
127135

128136
return str_replace(
@@ -285,6 +293,8 @@ protected function getOptions()
285293
['parent', 'p', InputOption::VALUE_OPTIONAL, 'Generate a nested resource controller class'],
286294
['resource', 'r', InputOption::VALUE_NONE, 'Generate a resource controller class'],
287295
['requests', 'R', InputOption::VALUE_NONE, 'Generate FormRequest classes for store and update'],
296+
['singleton', 's', InputOption::VALUE_NONE, 'Generate a singleton resource controller class'],
297+
['creatable', null, InputOption::VALUE_NONE, 'Indicate that a singleton resource should be creatable'],
288298
];
289299
}
290300
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
3+
namespace {{ namespace }};
4+
5+
use {{ namespacedModel }};
6+
use {{ rootNamespace }}Http\Controllers\Controller;
7+
use Illuminate\Http\Request;
8+
use {{ namespacedParentModel }};
9+
10+
class {{ class }} extends Controller
11+
{
12+
/**
13+
* Store the newly created resource in storage.
14+
*
15+
* @param \Illuminate\Http\Request $request
16+
* @param \{{ namespacedParentModel }} ${{ parentModelVariable }}
17+
* @return \Illuminate\Http\Response
18+
*/
19+
public function store(Request $request, {{ parentModel }} ${{ parentModelVariable }})
20+
{
21+
abort(404);
22+
}
23+
24+
/**
25+
* Display the resource.
26+
*
27+
* @param \{{ namespacedParentModel }} ${{ parentModelVariable }}
28+
* @return \Illuminate\Http\Response
29+
*/
30+
public function show({{ parentModel }} ${{ parentModelVariable }})
31+
{
32+
//
33+
}
34+
35+
/**
36+
* Update the resource in storage.
37+
*
38+
* @param \Illuminate\Http\Request $request
39+
* @param \{{ namespacedParentModel }} ${{ parentModelVariable }}
40+
* @return \Illuminate\Http\Response
41+
*/
42+
public function update(Request $request, {{ parentModel }} ${{ parentModelVariable }})
43+
{
44+
//
45+
}
46+
47+
/**
48+
* Remove the resource from storage.
49+
*
50+
* @param \{{ namespacedParentModel }} ${{ parentModelVariable }}
51+
* @return \Illuminate\Http\Response
52+
*/
53+
public function destroy({{ parentModel }} ${{ parentModelVariable }})
54+
{
55+
//
56+
}
57+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<?php
2+
3+
namespace {{ namespace }};
4+
5+
use {{ namespacedModel }};
6+
use {{ rootNamespace }}Http\Controllers\Controller;
7+
use Illuminate\Http\Request;
8+
use {{ namespacedParentModel }};
9+
10+
class {{ class }} extends Controller
11+
{
12+
/**
13+
* Show the form for creating the new resource.
14+
*
15+
* @param \{{ namespacedParentModel }} ${{ parentModelVariable }}
16+
* @return \Illuminate\Http\Response
17+
*/
18+
public function create({{ parentModel }} ${{ parentModelVariable }})
19+
{
20+
abort(404);
21+
}
22+
23+
/**
24+
* Store the newly created resource in storage.
25+
*
26+
* @param \Illuminate\Http\Request $request
27+
* @param \{{ namespacedParentModel }} ${{ parentModelVariable }}
28+
* @return \Illuminate\Http\Response
29+
*/
30+
public function store(Request $request, {{ parentModel }} ${{ parentModelVariable }})
31+
{
32+
abort(404);
33+
}
34+
35+
/**
36+
* Display the resource.
37+
*
38+
* @param \{{ namespacedParentModel }} ${{ parentModelVariable }}
39+
* @return \Illuminate\Http\Response
40+
*/
41+
public function show({{ parentModel }} ${{ parentModelVariable }})
42+
{
43+
//
44+
}
45+
46+
/**
47+
* Show the form for editing the resource.
48+
*
49+
* @param \{{ namespacedParentModel }} ${{ parentModelVariable }}
50+
* @return \Illuminate\Http\Response
51+
*/
52+
public function edit({{ parentModel }} ${{ parentModelVariable }})
53+
{
54+
//
55+
}
56+
57+
/**
58+
* Update the resource in storage.
59+
*
60+
* @param \Illuminate\Http\Request $request
61+
* @param \{{ namespacedParentModel }} ${{ parentModelVariable }}
62+
* @return \Illuminate\Http\Response
63+
*/
64+
public function update(Request $request, {{ parentModel }} ${{ parentModelVariable }})
65+
{
66+
//
67+
}
68+
69+
/**
70+
* Remove the resource from storage.
71+
*
72+
* @param \{{ namespacedParentModel }} ${{ parentModelVariable }}
73+
* @return \Illuminate\Http\Response
74+
*/
75+
public function destroy({{ parentModel }} ${{ parentModelVariable }})
76+
{
77+
//
78+
}
79+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
namespace {{ namespace }};
4+
5+
use {{ rootNamespace }}Http\Controllers\Controller;
6+
use Illuminate\Http\Request;
7+
8+
class {{ class }} extends Controller
9+
{
10+
/**
11+
* Store the newly created resource in storage.
12+
*
13+
* @param \Illuminate\Http\Request $request
14+
* @return \Illuminate\Http\Response
15+
*/
16+
public function store(Request $request)
17+
{
18+
abort(404);
19+
}
20+
21+
/**
22+
* Display the resource.
23+
*
24+
* @return \Illuminate\Http\Response
25+
*/
26+
public function show()
27+
{
28+
//
29+
}
30+
31+
/**
32+
* Update the resource in storage.
33+
*
34+
* @param \Illuminate\Http\Request $request
35+
* @return \Illuminate\Http\Response
36+
*/
37+
public function update(Request $request)
38+
{
39+
//
40+
}
41+
42+
/**
43+
* Remove the resource from storage.
44+
*
45+
* @return \Illuminate\Http\Response
46+
*/
47+
public function destroy()
48+
{
49+
//
50+
}
51+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<?php
2+
3+
namespace {{ namespace }};
4+
5+
use {{ rootNamespace }}Http\Controllers\Controller;
6+
use Illuminate\Http\Request;
7+
8+
class {{ class }} extends Controller
9+
{
10+
/**
11+
* Show the form for creating the resource.
12+
*
13+
* @return \Illuminate\Http\Response
14+
*/
15+
public function create()
16+
{
17+
abort(404);
18+
}
19+
20+
/**
21+
* Store the newly created resource in storage.
22+
*
23+
* @param \Illuminate\Http\Request $request
24+
* @return \Illuminate\Http\Response
25+
*/
26+
public function store(Request $request)
27+
{
28+
abort(404);
29+
}
30+
31+
/**
32+
* Display the resource.
33+
*
34+
* @return \Illuminate\Http\Response
35+
*/
36+
public function show()
37+
{
38+
//
39+
}
40+
41+
/**
42+
* Show the form for editing the resource.
43+
*
44+
* @return \Illuminate\Http\Response
45+
*/
46+
public function edit()
47+
{
48+
//
49+
}
50+
51+
/**
52+
* Update the resource in storage.
53+
*
54+
* @param \Illuminate\Http\Request $request
55+
* @return \Illuminate\Http\Response
56+
*/
57+
public function update(Request $request)
58+
{
59+
//
60+
}
61+
62+
/**
63+
* Remove the resource from storage.
64+
*
65+
* @return \Illuminate\Http\Response
66+
*/
67+
public function destroy()
68+
{
69+
//
70+
}
71+
}

0 commit comments

Comments
 (0)