我想有一個APIController所以我想交換它們提供的功能只是作爲laravel的默認路由控制器作爲同一如下如何在參數改變混凝土類名稱派生類方法
//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可以接受FormRequest任何類的存儲方法
但我得到以下錯誤,
Declaration of App\Http\Controllers\KeysController::store() should be compatible with App\Http\Controllers\APIController::store()
這是很好的,因爲簽名不符。那麼我怎麼能做到這一點?我在哪裏可以找到laravel如何能夠接受任何類型的爭論。
這是不可能的。 Laravel也不這樣做。在框架中沒有實際操作的抽象控制器('store()'等),因爲這是不可能的。你想用這個達到什麼目的?只是'respondNotSupported'的東西? – lukasgeiter
SomeOtherRequest和KeysRequest派生自Illuminate \ Foundation \ Http \ FormRequest類如果我之間沒有APIController類,那麼事情會很好。截至目前,我只是有'respondNotSupported'。所以拉拉維爾以某種方式做它。怎麼樣 ? – Amit