trinityrank / nova-resource-remove
LaravelNovaResourceRemove - 安全删除与另一张表相关联的资源并分配给另一个资源
v0.1.1
2022-07-21 11:49 UTC
Requires
- php: ^8.0
This package is auto-updated.
Last update: 2024-09-21 16:24:24 UTC
README
步骤 1: 安装包
要开始使用 Nova Resource Remove,使用 Composer 命令将包添加到您的 composer.json 项目依赖中
composer require trinityrank/nova-resource-remove
步骤 2: 配置
- 您需要在 Nova 资源中导入类
use Trinityrank\LaravelNovaResourceRemove\NovaResourceRemove;
- 然后您需要在 Nova 资源中添加操作函数
- 强烈建议仅使用 onlyOnTableRow()
- 第一个参数是资源相关模型的路径
- 第二个是外键列的名称
- 第三个参数是模型附加的外表名称
public function actions(Request $request) { return [ (new NovaResourceRemove( ['\App\Models\Types\Category', 'category_id', ['categoriables']] ))->confirmButtonText('Remove Category')->onlyOnTableRow() ]; }
- 如果您想授权一个操作不显示给特定资源
public function actions(Request $request) { return [ (new NovaResourceRemove( ['\App\Models\User', 'user_id', ['pages','articles']] ))->canSee(function ($request) { return !$this->model()->hasRole(['Super Admin']); })->confirmButtonText('Remove User')->onlyOnTableRow() ]; }
步骤 3: 其他配置
- 当一个操作添加到具有关联授权策略的资源时,策略的删除方法必须返回 false。
<?php namespace App\Policies; use App\Models\Types\Category; use App\Models\User; use Illuminate\Auth\Access\HandlesAuthorization; class CategoryPolicy { use HandlesAuthorization; /** * Determine whether the user can view any models. * * @param \App\Models\User $user * @return \Illuminate\Auth\Access\Response|bool */ public function viewAny(User $user) { return true; } /** * Determine whether the user can view the model. * * @param \App\Models\User $user * @param \App\Models\Category $category * @return \Illuminate\Auth\Access\Response|bool */ public function view(User $user, Category $category) { return true; } /** * Determine whether the user can create models. * * @param \App\Models\User $user * @return \Illuminate\Auth\Access\Response|bool */ public function create(User $user) { return true; } /** * Determine whether the user can update the model. * * @param \App\Models\User $user * @param \App\Models\Category $category * @return \Illuminate\Auth\Access\Response|bool */ public function update(User $user, Category $category) { return true; } /** * Determine whether the user can delete the model. * * @param \App\Models\User $user * @param \App\Models\Category $category * @return \Illuminate\Auth\Access\Response|bool */ public function delete(User $user, Category $category) { return false; } }