2

I'm making a one-button form, to add an entry to an entries field. Adding seems pretty straightforward, but it overwrites any previous entry that occupied the entries field. How would I append an entry to the entries field, or remove an entry?

<form method="post" accept-charset="UTF-8">
  {{ getCsrfInput() }}
  <input type="hidden" name="action" value="entries/saveEntry">
  <input type="hidden" name="entryId" value="{{ entry.id }}">
  <input type="hidden" name="redirect" value="{{currentUrl}}">
  <input type="hidden" name="fields[tournamentTeams][]" value="{{team.id}}">

  <input type="submit" value="Add {{team.title}} to this Tournament">
</form>

My guess is, I will have to populate the entries field input value with the already-added entries to append the entry, and do the same kinda deal upon removing the entry- no idea how I would detect and remove the entry though!

3

You guessed right, you have to set all already added entries again. To do this, just have some Twig logic when outputting the fields:

{% for currentTeam in entry.tournamentTeams %}
    <input type="hidden" name="fields[tournamentTeams][]" value="{{ currentTeam.id }}">
{% endfor %}
<input type="hidden" name="fields[tournamentTeams][]" value="{{ team.id }}">

To remove the entry:

{% for currentTeam in entry.tournamentTeams if currentTeam.id != team.id %}
    <input type="hidden" name="fields[tournamentTeams][]" value="{{ currentTeam.id }}">
{% endfor %}

Update: What I'm not sure about is if the above code works when trying to remove the last remaining entry. If it doesn't work I'd try and add something like this:

{% if (entry.tournamentTeams|length == 1) and (entry.tournamentTeams.first().id == team.id) %}
    <input type="hidden" name="fields[tournamentTeams]" value="">
{% endif %}

2
  • so I didn't do my thorough testing with this... I did run into an issue with the last remaining entry. Unfortunately, your snippet does not work... Any other ideas? Sep 21 '15 at 1:40
  • ah! turns out it was the brackets suffix in the name attribute. It wasn't necessary. I updated the answer :) Sep 21 '15 at 1:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.