twig - building array in for loop

38,663

The argument of merge has to be an array or object to merge it with an existing one. So write it as an array with one element.

{% set multipleChoiceAnswerText = multipleChoice.answerText %}
{% set multipleChoiceArray = multipleChoiceArray|merge([multipleChoice.answerText])  %}
Share:
38,663

Related videos on Youtube

john Smith
Author by

john Smith

Currently located at: Planet earth, Berlin

Updated on May 28, 2020

Comments

  • john Smith
    john Smith almost 4 years

    is it possible to iteratively fill a twig array with values?

    {% for question in questions %}
    {% set multipleChoiceArray = [] %}
        {% for multipleChoice in question.multipleChoiceAnswers %}
            {% set multipleChoiceArray = multipleChoiceArray|merge( multipleChoice.answerText )  %}
        {% endfor %}
    {% endfor %}
    

    the problem is here multipleChoiceArray|merge(multipleChoice.answerText)

    when i try to pass an array for example with key = loop.index like

    {% set multipleChoiceArray = multipleChoiceArray|merge({"loop['index']":"multipleChoice['answerText']"})  %}
    

    it works but the array contains the strings "["loop['index']":"multipleChoice['answerText']"]"

    when i try to pass variables like :

    {% set multipleChoiceArray = multipleChoiceArray|merge({loop.index:multipleChoice.answerText})  %}
    

    exception is : A hash key must be followed by a colon (:). Unexpected token "punctuation" of value "." ("punctuation" expected with value ":")

    so i am not able to "push" a value "multipleChoice.answerText" into "multipleChoiceArray"

    any hints how that is possible ? i just want to gather all possible answers and later check if answer is in that array and count sth up and display

  • john Smith
    john Smith over 10 years
    this throws an exception : A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "punctuation" of value "["
  • thegrunt
    thegrunt over 10 years
    yeah set is very ninja. you can also assign an array of objects to a variable with set and then loop through them. {% set cameras = { "family1": firstArray, "family2": secondArray }%} {% for identifier, item in cameras %}