扩展包中的模板文件有问题,非侵入式修正方法
示例问题描述
在dcat-admin 中 grid 使用switch 修改失败时。前端展示的状态是成功的。
正确的方式:应该是操作返回失败,前端展示也不能成功。
非侵入式去修改 扩展包里面的源代码,而是用自己定义的模板文件去覆盖。
- 在 switch.blade.php 的判断中添加代码
if (d.status) { Dcat.success(msg); reload && Dcat.reload(); } else { Dcat.error(msg); // 以下修正追加代码 that.prop('checked', !that.is(':checked')); that.parent().find('.switchery').remove(); new Switchery(that[0], that.data()); }
需要在 app/Providers/AppServiceProvider.php
的 boot
添加如下代码
// 自己定义的模板文件
$customView = resource_path('views/switch.blade.php');
if (file_exists($customView)) {
View::composer('admin::grid.displayer.switch', function ($view) {
// 重新指定视图路径
$view->setPath(resource_path('views/switch.blade.php'));
});
}
- 完整示例
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void
{
//
}
/**
* Bootstrap any application services.
*/
public function boot(): void
{
// 自己定义的模板文件
$customView = resource_path('views/switch.blade.php');
if (file_exists($customView)) {
View::composer('admin::grid.displayer.switch', function ($view) {
// 重新指定视图路径
$view->setPath(resource_path('views/switch.blade.php'));
});
}
}
}
这个问题在plus版中,已经修正。
dcat-admin 并未停止不前,plus版 持续更新 保持活力
dcat-plus admin (plus版)沿用 dcat-admn 最新代码,并让dcat-admin 保持活力。已支持到Laravel11,并新增多个组件。
加群学习交流
微信:Q3664839 (加微信 后拉你进入微信技术交流群)
本作品采用《CC 协议》,转载必须注明作者和本文链接
可以考虑使用官方介绍的: resource/view/vendor/xxx-扩展名/switch.blade.php 修改
战狼 去缅北回来了?