【问题标题】:how to remove all checkboxes from resource list in laravel nova?如何从 laravel nova 的资源列表中删除所有复选框?
【发布时间】:2020-03-12 07:47:51
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 嗨,到目前为止,您尝试了什么?你有任何代码可以显示吗?
  • 我还没有尝试任何东西。只是困惑尝试什么。如果你有任何建议会很棒....
  • 你能谈谈你为什么不想要它们吗?据我所知,当当前用户没有删除权限时,它们可以被隐藏......
  • 是的,我也知道。我只是希望它们隐藏,以便一键无法删除所有行。但我也想要那个单独的删除选项。

标签: laravel laravel-nova


【解决方案1】:

如上面 cmets 所述,最简洁的方法是限制用户权限。否则,有一些 hacky 方法可以尝试:

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

2。用css隐藏。

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

编辑感谢@Max's comment

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

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
    )
  )
},

【讨论】:

  • 但是有另一个问题如何针对特定资源进行精确化。?假设我有一个用户和发布资源,我只想要用户资源中的功能,这样就不能一次删除所有用户..但仍然希望在发布资源中删除所有功能..
  • @tanvirofficials 更新了我在“用 css 隐藏”部分的答案。只需在我的情况下更改资源名称“产品”
猜你喜欢
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-22
  • 1970-01-01
  • 2020-07-01
  • 1970-01-01
  • 2019-04-28
相关资源
最近更新 更多