Backpack 5.x+Laravel8.x:隐藏软删除项按钮时setAccessCondition方法不存在
解决Backpack 5.x中隐藏软删除条目Edit/Show按钮的方法
错误原因
Backpack 5.x已移除旧版本的setAccessCondition方法,该API在5.x版本中被废弃,因此调用时会提示方法不存在。
解决方案
以下两种方式均可实现隐藏软删除条目的Edit和Show按钮:
方式一:通过操作权限控制
在你的CrudController对应的操作方法中(如setupListOperation或setupTrashOperation),使用allowAccessFrom方法设置基于条目的访问条件:
public function setupListOperation() { // 其他列表配置代码... // 仅允许未软删除的条目执行update和show操作 $this->crud->allowAccessFrom('update', function($entry) { return ! $entry->trashed(); }); $this->crud->allowAccessFrom('show', function($entry) { return ! $entry->trashed(); }); }
方式二:直接控制按钮显示
通过按钮的when方法,指定仅当条目未软删除时才显示对应按钮:
public function setupListOperation() { // 其他列表配置代码... // 控制Edit按钮仅在条目未软删除时显示 $this->crud->button('edit')->when(function($entry) { return !$entry->trashed(); }); // 控制Show按钮仅在条目未软删除时显示 $this->crud->button('show')->when(function($entry) { return !$entry->trashed(); }); }
如果你的需求是在回收站操作(setupTrashOperation)中控制权限,只需将上述代码移至setupTrashOperation方法内即可。
内容的提问来源于stack exchange,提问作者Liju
相关产品推荐
相关产品推荐

