如何隐藏 Laravel Nova 上的编辑/删除/查看按钮?

问题描述 投票:0回答:2

所以我试图隐藏 Laravel Nova 资源中的按钮。但我不知道我可以在代码中添加什么。

那些按钮:

Image

laravel resources laravel-nova
2个回答
5
投票

我找到了一个解决方案,首先通过 artisan 命令创建一个策略: php artisan make:policy ModelNamePolicy --model=ModelName

然后你会在 app/Policies/ModelNamePolicy.php 中得到一个文件

public function view(User $user, InstructorOverview $instructorOverview) {
    return false;
}

您可以在函数视图中返回 false,创建、更新、删除、恢复、强制删除。


0
投票

如果您想对镜头执行此操作,可以通过覆盖与镜头相关的模型中的方法serializeForIndex来完成,因此例如在镜头本身中我们有一个uriKey方法

// In your lens file - in my case BuildingStatsLens
/**
 * Get the URI key for the lens.
 *
 * @return string
 */
public function uriKey()
{
    return 'building-stats-lens';
}

在模型中,在我的场景构建模型中,我们将拥有此代码

// In your model - in my case Building
/**
  * Prepare the resource for JSON serialization.
  *
  * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request
  * @param  \Illuminate\Support\Collection  $fields
  * @return array
  */
public function serializeForIndex(NovaRequest $request, $fields = null)
{
  $serialized = parent::serializeForIndex($request, $fields);

  if ($request->lens && $request->lens == 'building-stats-lens') {
      // If a lens is being viewed 
      $serialized = array_merge($serialized, [
          'authorizedToView' => false,
          'authorizedToUpdate' => false,
          'authorizedToDelete' => false,
          'authorizedToRestore' => false,
          'authorizedToForceDelete' => false,
          'authorizedToReplicate' => false,
      ]);
  }

  return $serialized;
}

这样查看、编辑、删除和复制选项将被隐藏。

© www.soinside.com 2019 - 2024. All rights reserved.