如何使用symfony2动态访问树枝模板中的对象

How to dynamically access objects in a twig template with symfony2

本文关键字:对象 何使用 symfony2 动态 访问      更新时间:2023-09-26

我甚至不知道这个问题的标题是什么。我从网络编程开始,我甚至不知道我应该用什么技术来做这件事。

我有一个symfoy2中包含条令的数据库。这个数据库有库,每个库都有图像(两个表OneToMany关系)。

我将一组画廊传递给一个小树枝模板,在那里我可以选择它们,这样我就可以选择一个并向画廊添加更多图像,添加新的画廊或使用提交按钮删除它们。

现在使用这个模板:

<select class="listGalleries" id="listGalleries" name='id' size="10">
{% for gallery in galleries %}
    <option value="{{gallery.id}}" >{{gallery.name}}</option>
{% endfor %}
</select>

进入表格。

现在,我想做的是,每次我点击选择的一个项目,在同一网页中显示所选画廊的所有图像。

我不知道该用哪种技术。我能用树枝做吗?我必须学习ajax吗?我想我必须去数据库读取属于该图库的图片的数据,但我不知道如何做到这一点,也不知道symfony2是否为我提供了更好的解决方案。

我们将不胜感激。

"Dynamically"不能在trick中完成,因为在其渲染之后,无法更改输出。

在我看来,你可以用两种方式:

使用trick在库中循环并输出它们,然后在更改选项时使用一些类似于引导选项卡的javascript来显示每个库。在bootstrap中,您可以这样做(假设gallery->images关系在$gallery->images中):

<div class="tab-content">
    {% for gallery in galleries %}
        <div class="tab-pane active" id="gallery{{ gallery.id }}">
             {% for image in gallery.images %}
                 <img src="{{ image.url }}" class="img-polaroid">
             {% endfor %}
        </div>
    {% endfor %}
</div>

现在使用类似的javascript

$("select#listGalleries").change(function () {
    $("select option:selected").each(function () {
        $("#gallery" + $(this).attr('value')).tab('show');
    });
})

否则,您可以在从中选择画廊后使用ajax返回画廊图像,并在页面上的某个位置渲染画廊图像。这可以通过两种方式实现,在symfony中渲染html,然后用javascript将输出放在页面中,或者只返回一个json(使用类似的东西),然后在javascript中创建html(我个人使用的是纯html)。