2014-09-24 56 views
1

我有一個表格根據我的數據庫中的實體動態生成字段(我的實體是課程)。對於每個新課程,它都會添加一個表單字段來修改它的排序順序。我的問題是,我如何在我的課程表中動態顯示這些單獨的表單域?枝條窗體小部件動態選擇表單字段

我的形式邏輯:

foreach ($entities as $id => $course) { //$id key included to show you courses key value 

    $formBuilder->add($course->getId(), 'text', array(
     'data' => $course->getsortOrder(), 
     'label' => false, 
     'attr' => array('class' => 'sort' /*, 'style' => 'visibility:hidden;'*/) 
)); 
} 

我的jQuery來修改表單字段:

$(document).ready(function() { 
    $(".records_list tbody").sortable({items: "tr"}, 
    {stop: function(event, ui) { 
     $(".sort").each(function(index) { 
     $(this).val(index); 
     }); 
    } 
    }); 
}); 

/* I tested the proper functionality of this jQuery by putting 
    <input type="text" class="sort" value="{{ entity.sortOrder }}"> 
    into the <td> that sort order is in. I want to replace this with 
    something like {{ form_widget(form.{entity.id}) }} */ 

我可以輕鬆地說:

{% for entity in entities %} 
<td> 
{% if(entity.id == 1) %} 
{{form_widget(form.1)}}   //1 is entity id 
{% else if (entity.id == 2) %} 
{{form_widget(form.2)}}   //2 is entity id 
{% else if (entity.id == 3) %} 
{{form_widget(form.3)}}   //3 is entity id 
{% endif %} 
</td> 
{% enfor %} 

但是,這顯然不是很活躍。你添加一個新課程,然後休息。

這將是很好,如果我可以說

{% for entity in entities %} 
<td> 
{% set course = entity.id %} 
{{form_widget(form.course)}} 
</td> 
{% endfor%} 

但可悲的是不工作。

任何有關如何動態地將這些表單字段添加到我的sortOrder的深入瞭解。

回答

3

我不知道你在做什麼。

但是,如果您想動態訪問對象或數組的屬性,可以使用attribute Twig function

要你應該嘗試在你的模板是這樣的:

{% for entity in entities %} 
    <td> 
     {{ form_widget(attribute(form, entity.id)) }} 
    </td> 
{% endfor%} 
+0

這正是我需要的!謝謝!順便說一句我試圖通過將我的課程所在的拖動到列表中的新位置來使我的實體列表可以排序。 – 2014-09-24 20:00:58