Активные разделы

Вы просматриваете документацию старой версии MoonShine. Рассмотрите возможность обновления вашего проекта до MoonShine 2.x.

Часто бывает, что необходимо создать ресурс, в котором будет исключена возможность удалять, или добавлять, или редактировать. И здесь речь не об авторизации, а о глобальном исключении этих разделов. Делается это крайне просто за счет свойства activeActions в ресурсе

namespace MoonShine\Resources;
 
class PostResource extends Resource
{
public static string $model = App\Models\Post::class;
 
public static string $title = 'Articles';
 
public static array $activeActions = ['create', 'show', 'edit', 'delete'];
//...
}

Достаточно исключить лишний

public static array $activeActions = ['create'];

Еще можно воспользоваться методом getActiveActions() и задать свою логику для доступных разделов

namespace MoonShine\Resources;
 
class PostResource extends Resource
{
public static string $model = App\Models\Post::class;
 
public static string $title = 'Articles';
 
public static array $activeActions = ['create', 'show', 'edit'];
 
//...
 
public function getActiveActions(): array
{
if (auth()->id() === $this->getItem()?->author_id) {
return array_merge(static::$activeActions, ['delete']);
}
 
return static::$activeActions;
}
}