如何删除或隐藏Backpack框架的默认保存按钮?
解决Backpack for Laravel隐藏默认保存按钮的问题
以下是几种可行的解决方案,帮你彻底移除默认保存按钮并保留自定义按钮:
方法一:直接清空所有默认保存按钮(最简便)
在你的BackpackMyController的setup()方法中,先清空所有已加载的默认保存按钮,再添加自定义按钮:
public function setup() { parent::setup(); // 清空所有默认保存按钮 $this->crud->saveActions = []; // 添加你的自定义保存按钮 $this->crud->addSaveAction([ 'name' => 'custom_save', 'label' => '自定义保存', 'redirect' => function($crud, $request, $itemId) { // 这里写你的自定义跳转逻辑 return $crud->route; }, 'button_class' => 'btn btn-primary', 'icon' => 'la la-save' ]); }
方法二:利用afterSetupDefaults钩子执行删除操作
默认保存按钮是在控制器构造阶段加载的,直接在setup()里删除可能时机不对。使用Backpack提供的afterSetupDefaults钩子,能确保在所有默认配置完成后再执行删除:
public function setup() { parent::setup(); $this->crud->afterSetupDefaults(function() { // 删除所有默认保存按钮 $this->crud->removeSaveAction('save_and_preview'); $this->crud->removeSaveAction('save_and_back'); $this->crud->removeSaveAction('save_and_edit'); $this->crud->removeSaveAction('save_and_new'); // 添加你的自定义保存按钮 $this->crud->addSaveAction([ // 自定义按钮配置 ]); }); }
方法三:重写setupDefaultSaveActions方法
直接覆盖SaveAction trait中的默认方法,完全替换默认按钮加载逻辑:
use Backpack\CRUD\app\Http\Controllers\Operations\SaveAction; class BackpackMyController extends CrudController { use SaveAction; // 重写默认方法,不加载任何默认按钮,直接添加自定义按钮 public function setupDefaultSaveActions() { $this->crud->addSaveAction([ 'name' => 'custom_save', 'label' => '自定义保存', 'redirect' => function($crud, $request, $itemId) { return $crud->route; } ]); } public function setup() { parent::setup(); // 其他控制器配置 } }
内容的提问来源于stack exchange,提问作者MasterEnotus
相关产品推荐
相关产品推荐

