You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Backpack Widget重复添加视图问题求助

CRUD控制器中Widget加载的视图重复插入两次问题

我为某模型创建了CRUD控制器,在setupCreateOperation方法中先调用Widget加载视图,再添加字段:

protected function setupCreateOperation(): void
{
        Widget::add([
            'type' => 'view',
            'view' => 'dt::template_fields_script',
        ]);
        /* 添加字段 */
}

对应的视图代码如下:

@push('after_scripts')
    <script> console.log("hello world")</script>
@endpush

但视图被重复插入两次,控制台日志也执行了两次。移除Widget::add则视图完全不加载。我还尝试了以下方式添加,问题依旧:

Widget::add()->type('script')->content('assets/js/admin/document/template_script.js');

请问该问题的原因是什么?


问题原因

这种重复加载的情况,主要是这几个常见原因:

  • 你使用的CRUD框架(比如Laravel Backpack这类常用工具)在渲染创建页面时,会多次触发setupCreateOperation方法——比如初始页面加载触发一次,表单做AJAX验证或刷新时又触发一次,导致Widget被重复添加。
  • 框架的Widget组件本身没有内置去重机制,只要调用Widget::add就会往页面里追加一次内容,不会自动判断是否已经添加过相同的视图或脚本。
  • 视图里用的@push('after_scripts')指令,在页面多次渲染的场景下,会把脚本多次推入到脚本栈中,最终页面输出时就会重复出现。

内容的提问来源于stack exchange,提问作者KordDEM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 13:34:53