From UX stand point, having the unique identifier is confusing for non-savy users. Let's have an option to remove this.

#28 1802916-er-show-identifier-28.patch6.13 KBSteve.C
#28 interdiff.txt2.2 KBSteve.C
#14 1802916-er-show-identifier-14.patch5.39 KBRoySegall
PASSED: [[SimpleTest]]: [MySQL] 119 pass(es). View
#9 1802916-er-show-id-option-9.patch6.58 KBamitaibu
PASSED: [[SimpleTest]]: [MySQL] 119 pass(es). View
#5 1802916-er-show-identifier-5.patch5.29 KBamitaibu
PASSED: [[SimpleTest]]: [MySQL] 114 pass(es). View
#3 1802916-er-show-identifier-3.patch5.84 KBamitaibu
PASSED: [[SimpleTest]]: [MySQL] 114 pass(es). View
#1 1802916-er-show-identifier-1.patch2.69 KBamitaibu
PASSED: [[SimpleTest]]: [MySQL] 114 pass(es). View
Members fund testing for the Drupal project. Drupal Association Learn more


amitaibu’s picture

Status: Active » Needs review
2.69 KB
PASSED: [[SimpleTest]]: [MySQL] 114 pass(es). View
amitaibu’s picture

Status: Needs review » Closed (won't fix)

Bottom line -- look at other modules, such as

amitaibu: DamZ: btw, are you ok with such a feature -- ?
[12:03pm] c-g: => Add option to autocomplete widget to hide term ID => Entity reference, Code, normal, needs review, 0 comments, 1 IRC mention
[12:09pm] DamZ: amitaibu: no, I'm not ok with this
[12:09pm] DamZ: amitaibu: this is really just an issue with the Autocomplete widget we are using
[12:09pm] DamZ: ie. the core one
[12:09pm] amitaibu: DamZ: this is for when I select a single bundle
[12:10pm] DamZ: nothing forces you to use the core autocomplete widget, as there are altenatives
[12:10pm] amitaibu: DamZ: sure, possible. but didn't understand the problem with the core widget
[12:10pm] DamZ: amitaibu: bojanz: ok, here we are:
[12:10pm] c-g: => Horizontal extensibility of Fields: introduce the concept of behavior plugins => Drupal core, field system, normal, active, 0 comments, 1 IRC mention
[12:11pm] DamZ: amitaibu: well, the core widget displays to the user the key, so we have to put the key somewhere in the text
[12:12pm] DamZ: most of the times, the label is not unique, it's just happens to be unique for taxonomy terms belonging to the same vocabulary, but even that is britle
[12:12pm] DamZ: we don't even have a unique key on the term name in the database
[12:13pm] amitaibu: DamZ: yeah, my problem isn't the concept, I'm thinking about UX (and about my client) -- where they say, I'll make sure nothing is duplicate, but keep the widget simple
[12:13pm] DamZ: amitaibu: yes, and my answer is "don't use core autocomplete"
[12:13pm] amitaibu: DamZ: so the option is enabled by default. I can also improve the description about implicaton
[12:13pm] amitaibu: i see
[12:14pm] amitaibu: DamZ: but just checked, the term reference doesn't add an entity ID
[12:14pm] DamZ: amitaibu: yes, as I said "most of the times, the label is not unique, it's just happens to be unique for taxonomy terms belonging to the same vocabulary, but even that is britle"
[12:16pm] amitaibu: DamZ: yeah, I understand that, and I understand why it *might* be problematic, but If I take care of the duplication, I think it would be nice (==in ER) to have an option to remove the entity ID. The description can say "Make sure you don't have duplicate bla bla"
[12:18pm] amitaibu: DamZ: are you sold, or should I let go?
[12:18pm] DamZ: amitaibu: I think implementing any other autocomplete widget would be a far better solution
[12:19pm] DamZ: for example based on
[12:19pm] DamZ: or any 1000s of libraries that do that
[12:20pm] DamZ: or
[12:20pm] amitaibu: DamZ: but don't all those widgets that don't have an entity ID have the same issue of duplication?
[12:21pm] amitaibu: DamZ: I have no problem using other/ writing custom widget, I'm just thinking there's a need for this we can solve in ER provided we properly document it
[12:21pm] DamZ: or maybe even Chose
[12:21pm] DamZ: or maybe even Chosen
[12:22pm] DamZ: amitaibu: I think it would be better for everybody to have a better autocomplete supported in Entity Reference
[12:22pm] DamZ: do you disagree?
[12:22pm] DamZ: your approach is very very one-off
[12:24pm] amitaibu: DamZ: no, I don't disagree, what I don't understand, maybe I don't know deluxe well enough, is how it prevents the duplication if it doesn't show the entity ID
[12:25pm] amitaibu: DamZ: as I understand it just does the entity selection, only in a fencier way
[12:25pm] DamZ: amitaibu: it stores the key, but only displays the label to the user
[12:25pm] DamZ: which is what you want
[12:26pm] amitaibu: DamZ: yap, that's exactly what my Patch is trying to do. Store key but show label
[12:26pm] DamZ: amitaibu: your patch only displays the label, and tries to find the key based on the label
[12:27pm] DamZ: amitaibu: a better autocomplete should (1) only display labels to the user, but (2) post the key to the server
[12:27pm] amitaibu: DamZ: ok, now we're on the same page.

amitaibu’s picture

Status: Closed (won't fix) » Needs review
5.84 KB
PASSED: [[SimpleTest]]: [MySQL] 114 pass(es). View doesn't solve the issue in any better way. A separate issue should be to integrate AD with ER.

Attached patch improves:

  • Validation in case there's no entity ID and there are duplicate labels we select the first one
  • Better description on the implication of unchecking this checkbox
joachim’s picture

Definitely gets a +1 from me -- users on my site have been asking me what the number in brackets mean and getting confused by it.

+++ b/plugins/selection/EntityReference_SelectionHandler_Generic.class.php
@@ -212,24 +212,27 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
+          form_error($element, t('Many entities are called %value. Specify the one you want by appending the id in parentheses, like "@value (@id)"', array(

As for this, I think that finding the ID of the entity is too complex a task for a lot of users. (Also, as an identification method it seems a bit weak to me: what if you make a typo and put spaces in the parentheses or something like that? I don't trust my pwn fringers not to make tpyes. No kidding, this is what I typ like ;)

+++ b/entityreference.module
@@ -871,8 +881,6 @@ function _entityreference_autocomplete_validate($element, &$form_state, $form) {
       // autocomplete but filled in a value manually.
-      $field = field_info_field($element['#field_name']);
-      $handler = entityreference_get_selection_handler($field);
       $field_name = $element['#field_name'];

This looks like an unrelated clean-up.

amitaibu’s picture

5.29 KB
PASSED: [[SimpleTest]]: [MySQL] 114 pass(es). View

> This looks like an unrelated clean-up.

Yeah, I diffed after pushing that fix. re-rolled.

amitaibu’s picture

Title: Add option to autocomplete widget to hide term ID » Add option to autocomplete widget to hide entity ID

Better title

amitaibu’s picture

Status: Needs review » Closed (won't fix)
joachim’s picture

That's great, but given there's a pretty good-looking patch here and no movement on that issue in ages, might it not be better to commit this patch here in the meantime?

amitaibu’s picture

6.58 KB
PASSED: [[SimpleTest]]: [MySQL] 119 pass(es). View

Still need this for a make file...

7wonders’s picture

#9 was exactly what I was looking for. Works for me.

joachim’s picture

Category: task » feature
Status: Closed (won't fix) » Needs review

Reopening, as I think there is a clear case for this feature.

7wonders’s picture

I take it back, seems to have broken my autocomplete and doesnt give any results. Will see if I can figure out why.


Patch seemed to have removed necessary $matches and foreach loop from get_matches callback. Should look like this for autucomplete to work again:

   if (isset($tag_last)) {
        // Get an array of matching entities.
        $entity_labels = $handler->getReferencableEntities($tag_last, $instance['widget']['settings']['match_operator'], 10);

        // Loop through the products and convert them into autocomplete output.
        $show_identifier = $instance['widget']['settings']['show_identifier'];
        foreach ($entity_labels as $values) {
            foreach ($values as $entity_id => $label) {
                $key = $show_identifier ? "$label ($entity_id)" : $label;
                // Strip things like starting/trailing white spaces, line breaks and tags.
                $key = preg_replace('/\s\s+/', ' ', str_replace("\n", '', trim(decode_entities(strip_tags($key)))));
                // Names containing commas or quotes must be wrapped in quotes.
                if (strpos($key, ',') !== FALSE || strpos($key, '"') !== FALSE) {
                    $key = '"' . str_replace('"', '""', $key) . '"';
                $matches[$prefix . $key] = '<div class="reference-autocomplete">' . $label . '</div>';

But it doesnt save my selection.

7wonders’s picture

nope, I cant figure it out. If i use the patch in 9 I get no results. If I put the code I put above back in, I get results but it wont save (i think due to the autocomplete validate function requiring the entity id to do the preg match on).

RoySegall’s picture

5.39 KB
PASSED: [[SimpleTest]]: [MySQL] 119 pass(es). View

@7wonders is right, the patch seems to remove the $matches and therefor we don't get auto complete.

I attached a re rolled patch.

Cristhian’s picture

weri’s picture

There is a duplicate:

rituraj.gupta’s picture

#14 and its related other patches are not working. I am worried. Is there any other solution ? How can we remove tid when we choose taxonomy term in autocompleted field using entity reference ?

Ritu Raj

RoySegall’s picture

You can use the chosen ajax like someone suggested earlier

rituraj.gupta’s picture

I tried to enable to chosen ajax but it dependencies on chosen module which must be >= 7.2 version. I haven't found this module in 7.2 version. Drupal provide in 7.x-1.0 version.

:( .. Please help ..

RoySegall’s picture

I remember that there was a patch for chosen ajax and the version problem. Try to download the dev version of the chosen ajax module

jrb’s picture

Apparently there were some unrelated changes that broke this functionality. The patch here is also required now to allow the patch in #9 to work:

Paul B’s picture

Status: Needs review » Needs work

The patch in #14 does not work for me, it gets rid of the entity id but after saving my field is empty. The patch mentioned in #21 does not help either.

isellakuria’s picture

Has there been any update on this issue?

zilla’s picture

no idea, but those brackets are really confusing - they actually warrant their own block to remind users to just "ignore them" :)

at any rate, there was some work on Chosen to create Chosen Ajax to *Specifically* address this "number in brackets" issue

for those interested in the code or what they are doing:

JvE’s picture

stalecheerios’s picture

I found a workaround for this when the entity reference info is prepopulated from the URL... You can use a regular term reference autocomplete field for the user-facing field, and hide the entity reference field using display suite (or other methods).

vishal.sirsodiya’s picture

How to hide comment(s) and author name in auto-complate list

Steve.C’s picture

Building on patch #14 I've added code to EntityReference_SelectionHandler_Views to work with views fed fields. We don't have a requirement to show errors to the user, in fact we would prefer just to take the first matching value and move on, so it's a bit more direct. Sharing in case it helps someone.

Ghostthinker’s picture

For anyone who needs a qucik solution that works (for me):

Samvel’s picture

#28 and # 14 not working with entityreference autocomplete (without identifier) with USER entities

jasonluttrell’s picture

Tried #28 but it fails to prepopulate the fields.

botris’s picture

Status: Closed (duplicate) » Active

It's actually not a duplicate. The referenced issue is not about hiding the entity id, also it was committed years ago but it's still not possible to hide the entity id.

botris’s picture

Tested #28 and it works after patch #4 from #1974202: Values not saved when not selected from the autocomplete menu is applied.
Tested both user and node entities, tested new content and prepopulate, all seems fine.

NWOM’s picture

Status: Active » Needs review
NWOM’s picture

botris’s picture

Samvel’s picture

These patches not working for me. I have entityreference fields in field collection

lunk_rat’s picture

Would be really great UX improvement to get this committed. How can I help?

NWOM’s picture

@lunk_rat: This patch requires #1702172: Saving allowed even when input is not valid in autocomplete results, but is no longer compatible with it, so the next step would be to make this one compatible. I would have dived in myself, but am just now starting to provide simple patches and learning a bit of PHP.

NWOM’s picture

NWOM’s picture

mlochd’s picture

no luck either... after applying the patch on entityreference 7.x-1.x-dev and unchecking the setting to Show entity ID, the referenced nodes disappear after I saved it

calefilm’s picture

Has anyone made any progress on this? I'm working with a Entity Reference field that I would like my users to autocreate/ADD MULTIPLE terms into my taxonomy, hence the Entityreference Autocreate module. Avoiding the appearance of the (ID) tag, I've enabled Chosen, Chosen Ajax, Autocomplete Deluxe, but none of these options help me. I end up not being able to add a new term or the ID still displays. Which brings me back to here, the patches...

I've tried applying the patches in this thread and in the duplicate: but I have no luck. Maybe I'm patching wrong but I am not getting any to accept. I'm using Mac Osx terminal using the "patch < file.patch" method.

Besides the patch, anyone else come up with a solution to add multiple terms and avoid seeing the ID?

jian he’s picture

Drupal 8.x also has this annoying issues.

MustangGB’s picture

Status: Needs work » Closed (duplicate)

Actually this is a duplicate of #1411304: Autocomplete hide id options for use with unique labels, which is about hiding the entity id, hasn't been committed yet, and is postponed on #1702172: Saving allowed even when input is not valid in autocomplete results.

I think it's best if we all work in the same issue on this to avoid duplicate efforts, so closing this again.

geraldvillorente’s picture

I temporarily resorted in using a padding (space) just to hide the entity id. Tried Ajax Chosen but it not working on my end.