使用Agile UI创建动态添加客户的模态表单时触发Atk4\Ui\Exception报错求助
Agile UI创建动态添加客户的模态表单时触发Atk4\Ui\Exception报错求助
大家好,我现在用Agile UI开发功能,想要做一个能动态添加客户的模态表单,但一直触发这个错误:
Atk4\Ui\Exception: Use View::$entity property instead for entity access
完整的调用栈片段是这样的:
Stack Trace # File Object Method vendor/atk4/ui/src/View.php:112 public_html/clients.php:54 atk_layout_maestro_modal_view_form __get( 'model') vendor/atk4/core/src/HookTrait.php:317 {closure}(...) vendor/atk4/...
有没有大佬能帮忙看看这问题咋解决啊?
兄弟,我前阵子刚踩过这个坑!这个报错原因很明确——Agile UI在新版本里把View类中访问实体的属性从$model改成$entity了,你代码里肯定有直接调用模态表单View实例的$model属性的地方,比如类似这样的旧写法:
// 错误写法 $form->model->save();
你只需要把所有用到$model的地方全换成$entity就行,比如上面的代码改成:
// 正确写法 $form->entity->save();
另外,如果你是在绑定模型到表单的时候出的问题,也要注意用新的关联方式,创建模态表单并绑定客户模型的正确示例大概是这样的:
// 创建模态框 $modal = new \Atk4\Ui\Modal('新增客户'); // 给模态框添加表单 $form = $modal->add(new \Atk4\Ui\Form()); // 用setEntity绑定你的客户模型,而不是直接赋值$model $form->setEntity($yourClientModel); // 处理表单提交逻辑 $form->onSubmit(function ($form) { // 用entity访问模型并保存 $form->entity->save(); return new \Atk4\Ui\JsToast('客户添加成功!'); });
你直接去看clients.php的第54行,肯定是那一行在调用__get('model'),把model替换成entity就搞定了!
备注:内容来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

