依赖字段轻松管理 4

问题描述 投票:0回答:0

我刚刚开始使用 easy admin 4,我想获得经典的依赖字段,在那种情况下,应该字段中的选择和,是纯 HTML + JS 中使用端点和 ajax 调用对我来说没有任何神秘感的东西但是使用框架......我找不到解决方案。

我一直在阅读官方文档: https://symfony.com/bundles/EasyAdminBundle/current/fields/AssociationField.html 以及关于 symfony 中的依赖字段:https://symfonycasts.com/screencast/symfony-forms/choice-type-fields.

这个想法是你正在创建一个 Client 实体,它与 Provider 有 ManyToOne 关系,并且都有一个名为“percentage”的字段这个想法是,当你创建一个 client 并自动选择一个 provider 的“percentage”值时选定的提供者将被复制到当前客户端的输入“百分比”。 我想最简单的解决方案是呈现提供者列表并在选项中添加某种数据-foo =“百分比”,稍后在选择时使用 JS 检索它而不是创建自定义端点并使用 Ajax 使用它。

我一直在尝试设置自定义表单并使用类似于 symfonycast 教程的逻辑,但没有成功,现在我最接近的解决方案是:

  1. ClientCrudController
    class ClientCrudController extends AbstractCrudController
{


    public static function getEntityFqcn(): string
    {
        return Client::class;
    }


    public function configureFields(string $pageName): iterable
    {

        yield AssociationField::new('provider');
        yield NumberField::new('percentage');
    }
}
  1. 覆盖默认的新@!EasyAdmin/crud/new.html.twig 模板,以某种方式访问提供者选择的值并尝试检索其“百分比”:
{% extends '@!EasyAdmin/crud/new.html.twig' %}
{% block body_javascript %}
    <script>
        const providerInput = document.getElementById('Client_proveedor');
        const percentageInput = document.getElementById('Client_percentaje');
        proveedorInput.addEventListener('change', () => {
            const selectedOption = proveedorInput.options[proveedorInput.selectedIndex];
            // and now??
        });

    </script>
{% endblock %}

但是我不知道如何将这个 data-foo 添加到选项中,比如:

<option value=1 data-foo="3.5">provider1</option>
<option value=2 data-foo="7">provider2</option>
<option value=3 data-foo="9">provider3</option>

有什么想法吗?建议、更好的方法或指向更详细文档的链接?

提前致谢。

编辑:抱歉缺少详细信息,想法是从提供者检索当前百分比值并将其放入客户端实体的输入中,以便为自定义客户端提供视觉修改的机会(它不会总是与选定的供应商)

ajax symfony easyadmin
© www.soinside.com 2019 - 2024. All rights reserved.