get または post パラメーターとして id を渡しませんが、HTTP ヘッダーで渡します
これにより REST が無効になるため、実際には REST ではなくなります。したがって、カスタマイズせずに RestfulAbstractController を使用することはできません。
独自の抽象コントローラーを作成するか、getIdentifier
メソッドをオーバーライドできます。
protected function getIdentifier($routeMatch, $request)
{
$identifier = $this->getIdentifierName();
$headers = $request->getHeaders();
$id = $headers->get($identifier)->getFieldValue();
if ($id !== false) {
return $id;
}
return false;
}
各コントローラに正しい識別子名を設定していることを確認してください。この場合、識別子名は、使用しているヘッダーの名前と一致する必要があります。
これは、GET だけでなく、GET、PUT、PATCH、DELETE、および HEAD リクエストにも使用されることに注意してください。
/編集:
getIdentifier
メソッドは、コントローラが実行するメソッドを決定するフローで呼び出されます。通常、これは次のとおりです。
- コントローラが構築されます
- コントローラー
dispatch
が呼び出されます (コントローラーは Dispatchable です)
- イベント「
dispatch
ディスパッチ」をトリガーします
- メソッド
onDispatch
はこのイベントをリッスンします
- AbstractRestfulController では、メソッドはどのメソッドを呼び出すかを決定しようとします
#5 では、たとえば、リクエストがGET リクエストかどうかをチェックします。もしそうなら、与えられた識別子があるかどうかをチェックします。その場合、get()
が使用されます。そうでない場合は、getList()
が使用されます。「与えられた識別子があるかどうか」チェックはgetIdentifier()
メソッドで行われます。
AbstractRestfulController を独自の抽象コントローラーで拡張し、 をオーバーライドするとgetIdentifier()
、独自の識別子を決定できます。このようにして、ルート パラメーターまたはクエリ パラメーターの代わりにヘッダーを確認できます。