Laravel-admin のバージョンが上がり、form メソッドの引数に記事 ID が渡らなくなりました。
(少なくとも 1.8 から。もっと以前のバージョンで既にそうなっているかもしれません)
そこで、記事の ID を取得する方法です。
私のケースでは、他の投稿者の記事を編集できないように制御したかったです。
ID を取得するには、記事のパスが article だった場合
request()->route()->parameters['article']
で取得できます。
また、他の投稿者の記事を編集しようとした場合に 404 に飛ばしたければ
記事のテーブルに admin_user_id のカラムを用意して
form メソッドの先頭とかで
if ($form->isEditing()) {
$articleId = request()->route()->parameters['article'];
$thisArticleAdminUserId = Article::where('id', $articleId)->first()->admin_user_id;
if ($thisArticleAdminUserId !== Admin::user()->id) {
abort(403);
}
}
とすることで制御することができます。
また、そもそも一覧(grid)に表示しない場合は
grid の先頭とかで
$grid->model()->where('admin_user_id', '=', Admin::user()->id);
とすることで、一覧には自分が投稿した記事しか表示されないようにできます。