3

I have a controller, a twig macro and the main template where the macro is imported. I would like to send an array in my macro and for each row of my table I want to display its data.

A line is composed of : title, description, img, type

The controller :

/**
 * @Route("/realisations", name="realisations")
 * @Method({"GET"})
 *
 * @return \Symfony\Component\HttpFoundation\Response
 */
public function realisationsAction()
{
    return $this->render('MyBundle:page:realisations.html.twig', $datas = array('type' => 'The type',
                                                                                 'img' => 'test.jpg',
                                                                                 'titre' => 'Test',
                                                                                 'description' => 'The description'));
}

The main template :

{% import "MyBundle:macros:realisationsMacros.html.twig" as macros %}

{{ macros.realisations(datas) }}

The macro :

    {% macro realisations(datas) %}
    {% for data in datas %}
        <div class="project {{ data.type }} isotope-item" style="position: absolute; left: 0; top: 0; transform: translate3d(0px, 0px, 0px);">
            <div class="content">
                <div class="image">
                    <img src="{{ asset('bundles/jsmetallerie/img/realisations/'~ data.type ~'/13.png') }}" alt="{{ data.titre }}">
                    <div class="item-hover">
                        <ul class="item-icons">
                            <li><a href="{{ asset('bundles/jsmetallerie/img/realisations/'~ data.type ~'/'~ img) }}" data-fancybox><i class="fa fa-search"></i></a></li>
                            <li><a href="{{ path('jsm_realisation_projet') }}"><i class="fa fa-link"></i></a></li>
                        </ul>
                    </div>
                </div>
                <span class="h6">{{ data.titre }}</span>
                <p>{{ data.description }}</p>
            </div>
        </div>
    {% endfor %}
{% endmacro %}

The Symfony error is : "Variable "datas" does not exist."

I think the error comes from creating my table in the controller but I do not know how to create it correctly

Thanks in advance

1 Answer 1

3

simply pass an array with a key named 'datas' as example:

    $params = array(
        'datas' => array('type' => 'The type',
                         'img' => 'test.jpg',
                         'titre' => 'Test',
                         'description' => 'The description')
    );

    return $this->render('MyBundle:page:realisations.html.twig', $params);

Hope this help

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.