Backpack框架updateOperation中添加Preview按钮不显示求助
Backpack Update页面添加Preview按钮不显示问题排查与解决
问题描述
我在Backpack框架的updateOperation中尝试添加「Preview」按钮,编写代码如下:
public function setupUpdateOperation() { $this->crud->setUpdateContentClass('col-md-12'); $this->setupCreateOperation('update'); $this->crud->addButtonFromView('line', 'preview', 'preview', 'beginning'); }
但按钮完全不显示。已在vendor/backpack/crud/buttons/preview.blade.php路径下创建对应的blade视图文件,内容为:
<a href="/intranet/{{ $entry->slug }}?preview=1"> <i class='fa fa-list'></i>Preview </a>
期望将该按钮添加在「Annulla」按钮附近(如图所示):
解决方案
1. 迁移按钮视图到项目目录
Backpack框架会优先加载项目resources/views/vendor/backpack/crud/buttons/下的视图,直接修改vendor目录文件会在框架更新时被覆盖:
- 在项目中创建路径
resources/views/vendor/backpack/crud/buttons/ - 将
preview.blade.php移动到该目录下,保留原有代码。
2. 修正按钮位置参数
「Annulla」按钮属于页面顶部的操作栏(top区域),而非line区域。调整按钮添加代码的位置参数:
public function setupUpdateOperation() { $this->crud->setUpdateContentClass('col-md-12'); $this->setupCreateOperation('update'); // 将按钮添加到top区域,放在Annulla(对应后台cancel按钮)之前 $this->crud->addButtonFromView('top', 'preview', 'preview', 'before:cancel'); }
如果需要放在Annulla之后,将before:cancel改为after:cancel;若要放在区域末尾,用end参数即可。
3. 调整代码执行顺序
setupCreateOperation('update')会复用创建页面的配置,可能覆盖更新页面的按钮设置。确保添加按钮的代码在该行之后执行,或者根据需求移除该行(若不需要复用创建页面配置)。
4. 清除视图缓存
执行Laravel缓存清除命令,确保新视图被加载:
php artisan view:clear
5. 调试验证按钮注册状态
若问题仍存在,可在setupUpdateOperation中添加调试代码,确认按钮是否被正确注册:
// 输出top区域所有按钮信息 dd($this->crud->getButtons('top'));
查看输出结果中是否包含preview按钮,确认其位置参数是否正确。
内容的提问来源于stack exchange,提问作者sfarzoso
相关产品推荐
相关产品推荐

