如何从 laravel nova 的资源列表中删除所有复选框?

tan*_*als 5 laravel laravel-nova

我有一个 laravel nova 应用程序。与资源列表中的其他 nova 应用程序一样,它在每行之前显示一个复选框。以及全选的选项。

这是这些复选框的屏幕截图

我想从资源列表中删除这些复选框。

谢谢。

mer*_*ayi 3

正如上面的评论所述,最干净的方法是限制用户权限。否则,有一些奇怪的方法可以尝试:

1. 空动作

如果您的资源没有操作,则在您的资源文件中覆盖availableActions方法:

/**
 * Get the actions that are available for the given request.
 *
 * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request
 * @return \Illuminate\Support\Collection
 */
public function availableActions(NovaRequest $request)
{
    return [];
}
Run Code Online (Sandbox Code Playgroud)

2.用css隐藏。

将其放入自定义工具中,或覆盖layout.blade.php.

编辑由于@Max的评论找到了一种更好的隐藏CSS的方法

div[dusk="products-index-component"] div[dusk="select-all-dropdown"],
div[dusk="products-index-component"] .table td:first-child,
div[dusk="products-index-component"] .table th:first-child {
  display: none !important;
}
Run Code Online (Sandbox Code Playgroud)

3. 自定义resource-index组件。

创建自定义工具并覆盖/nova/resources/js/views/Index.vue. 这是显示逻辑的复选框所在的位置。

/**
 * Determine whether to show the selection checkboxes for resources
 */
shouldShowCheckBoxes() {
  return (
    Boolean(this.hasResources && !this.viaHasOne) &&
    Boolean(
      this.actionsAreAvailable ||
        this.authorizedToDeleteAnyResources ||
        this.canShowDeleteMenu
    )
  )
},
Run Code Online (Sandbox Code Playgroud)