簡體   English   中英

Symfony2:具有數據原型的集合表單字段類型

[英]Symfony2: collection form field type with data-prototype

我有一個團隊,我想添加玩家(玩家的對象)。 我已正確設置表單“類型”類。 這是我的觀點的相關部分:

{% for index, player in form.players %}
    <div id="template" data-prototype="{{ form_widget(form.players.get('prototype')) | e }}">
        <span class="title">{{ index }}</span>
        {{ form_row(player.name) }}
    </div>
{% endfor %}

我的問題是data-prototype屬性不包含span標記; 它只包含{{ form_row(player.name) }}的輸出。 有沒有辦法在data-prototype屬性中包含div#template的全部內容?

這也困擾着我。 我定制了一個字段類型,甚至制作了簡單的表單類型,減少了字段集(對於更復雜的對象),但它感覺不對。 我想出了一個應該做的訣竅:)

首先 - 我認為你的<div id="team" data-prototype="...">應該在你的循環之外。

接下來,您的原型只是一個表單視圖對象,因此如果將其傳遞給模板,您可以手動渲染字段並自定義輸出。 注意:autoescape對包含的內容沒有影響,因此請使用“過濾器轉義”。

<div id="playerFields" data-prototype="{% filter escape %}{% include 'AcmeTeamBundle:Team:prototypePlayer.html.twig' with {'form': form.players.get('prototype')} %}{% endfilter %}">

然后在prototypePlayer.html.twig中,只需像往常一樣在表單視圖中渲染每個字段。

<div>
    <span class="title">{{ form_label(form.name) }}</span>
    {{ form_row(form.name) }}
    <span class="age">{{ form_label(form.age) }}</span>
    {{ form_row(form.age) }}
    {# render whatever else you like from your Form/PlayerType class... #}
<div>

我的模板與您的問題有不同的數據結構,但它應該有幫助:)

干杯,

克里斯


棄用警告:

從Symfony 2.1開始,不推薦使用.get() ,以上內容不起作用。 更換form.players.get('prototype')form.players.vars.prototype在以后的版本的Symfony來解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM