我想在hook_form_alter中修改实体自动完成结果。我的功能是
1)我有一个分类法的实体引用,而bundle is标记是第2级(字段名: Product ),在这篇文章中,我从Level2 3中选择了一个术语),我有另一个实体自动完成,它指的是分类标签级别1(字段名:产品父级)
现在,我的问题是,如果我在Product字段中选择一个二级术语,是否有任何选项可以在Product字段中显示该Product子字段的父项,例如:
Cabbage (L1)
-> Fruit (L2)
-> Flower (L2)
Lemon(L1)
-> Lemon Fruit(L2)
-> Eatable (L2)如果我选择“产品子”字段中的“水果”,则只希望在“产品父字段”中显示“柠檬”。有没有办法这么做。
发布于 2017-08-22 05:39:57
我编写了一个小模块,演示如何修改实体自动完成建议。您可以尝试修改它以满足您的需要。https://github.com/minnur/Alter-Entity-Autocomplete
发布于 2016-09-02 16:08:42
“自动完成”当前不接收作为上下文的父节点。
您可以尝试将JS用于不同的自动完成配置,以便以某种方式长时间传递该数据。查看动态实体引用模块如何切换自动完成以支持不同的目标实体类型。
我认为,您还需要实现自己的选择插件,这样您就可以传递一些配置,然后再对其进行操作。此外,配置是存储在服务器端的,客户端只获得一个随机密钥,因此当第一个字段发生更改时,您可能实际上需要使用#ajax重新构建第二个字段。
因此,这并不简单,而且需要相当多的自定义代码。
可能的替代办法:
发布于 2020-10-29 21:11:09
一个只会改变您想要的引用字段的更快的解决方案是制作一个EntityReferenceSelection插件,并在字段设置中选择它作为“参考方法”。只需确保您的id与docblock中的类别相匹配(否则它将无法在字段设置中进行选择):
<?php
namespace Drupal\custom_module\Plugin\EntityReferenceSelection;
use Drupal\Core\Entity\Plugin\EntityReferenceSelection\DefaultSelection;
use Drupal\node\NodeInterface;
/**
* Provides custom entity reference selection functionality.
*
* @EntityReferenceSelection(
* id = "custom",
* label = @Translation("Custom Reference Method"),
* group = "custom",
* weight = 1
* )
*/
class CustomSelection extends DefaultSelection {
...然后可以重写实体查询或返回的标签。
https://drupal.stackexchange.com/questions/213539
复制相似问题