trinityrank/nova-resource-remove

LaravelNovaResourceRemove - 安全删除与另一张表相关联的资源并分配给另一个资源

v0.1.1 2022-07-21 11:49 UTC

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;
	    }
	}