Допустим, у меня есть действие "Ban" для ресурса Product
, а модель Product
имеет поле is_banned
. Нет необходимости показывать действие «Ban» на странице сведений о Product
, которая уже забанена (is_banned=1
).
В документации Laravel Nova приведен пример сокрытия действий, основанных на том, имеет ли администратор полномочия на их выполнение:
public function actions(Request $request)
{
return [
(new Actions\EmailAccountProfile)->canSee(function ($request) {
return $request->user()->can(
'emailAnyAccountProfile', User::class
);
}),
];
}
Но это не касается того, как я могу получить экземпляр модели текущего ресурса в замыкании, которое я предоставляю для разрешения canSee
, когда этот метод вызывается в контексте одного ресурса (на странице сведений о нем).
actions()
метод, в котором мы регистрируем доступные действия, и в моем случае он относится к Product
классу ресурсов Nova, но он также не имеет доступа к контексту модели Eloquent.
Как этого достичь?