我刚刚开始使用 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 教程的逻辑,但没有成功,现在我最接近的解决方案是:
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');
}
}
{% 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>
有什么想法吗?建议、更好的方法或指向更详细文档的链接?
提前致谢。
编辑:抱歉缺少详细信息,想法是从提供者检索当前百分比值并将其放入客户端实体的输入中,以便为自定义客户端提供视觉修改的机会(它不会总是与选定的供应商)