次のように、laravelのデフォルトルートコントローラーと同じ機能を提供するAPIControllerを用意しようとしています
//Routes.php
Route::resource('keys', 'KeysController');
Route::resource('SomeOther', 'SomeOtherController');
abstract class APIController extends Controller {
public function store()
{
return $this->respondNotSupported();
}
}
class KeysController extends APIController {
public function store(KeysRequest $request)
{
$input = Request::all();
$newkey = Key::create($input);
return $newkey->id;
}
}
class SomeOtherController extends APIController {
public function store(SomeOtherRequest $request)
{
$input = Request::all();
$newkey = SomeOtherModel::create($input);
return $newkey->id;
}
}
したがって、laravel が store メソッドの FormRequest で任意のクラスを受け入れることができるように、クラスを交換したいと思います
しかし、次のエラーが表示されます。
Declaration of App\Http\Controllers\KeysController::store() should be compatible with App\Http\Controllers\APIController::store()
署名が一致しないため、これは問題ありません。どうすればこれを達成できますか?そして、laravelがその引数に対してあらゆる種類のクラスを受け入れる方法をどこで見つけることができますか。