2013-03-31 45 views
0

我試圖找到一個優雅的解決方案來渲染數據原型複選框的值。Symfony2數據原型替換複選框的值

當前只有標籤和名稱呈現的佔位符。

<label class="checkbox required" for="foobar_form_networkDetails_programList___name__"> 
    <input type="checkbox" id="foobar_form_networkDetails_programList___name__" name="foobar_form[networkDetails][programList][__name__]" required="required" value="1" />__name__label__ 
</label> 

所以我最終

programPrototype = programListContainer.data('prototype'); 
programRow  = programPrototype.replace(/__name__label__/g, programType); 
programRow  = programRow.replace(/__name__/g, programListIndex); 

我可以替換字符串值= 「1」,但這慘叫了黑客攻擊。我最好想替換一個佔位符值。

所以我的選擇是:

  • 呈現數據的原型字符串到DOM和對DOM進行操作的值復位我希望它是。
  • 覆蓋原型渲染(我不知道如何做到這一點)。

這似乎是一個很常見的情況,所以我想知道我錯過了什麼?

+0

如果你想替換'value =「1」'爲什麼不創建一個像'__name__label__'和'__name__'這樣的變量?否則,是的,你可以操縱DOM並修改值屬性 –

+0

我沒有創建那些佔位符。它們是默認樹枝主題的一部分。 –

+1

它們實際上並不是Twig主題的一部分,它們是表單組件呈現子表單的一部分。 –

回答

0

更改複選框的值不應該在原型中完成,而應該在創建原型的類中完成。

這些原型是從某種Type類構建的,它告訴表單組件應該如何構建表單。您需要做的是更改此配置並設置複選框類型的the value option

+0

感謝您的回覆。但是,我沒有使用Form組件來渲染表單複選框,只有數據原型。複選框是動態創建的。所以如果我理解正確,我最好的選擇是將原型複選框呈現給DOM,並在DOM本身上應用值更改(我試圖避免這種情況,因爲它很醜,我必須呈現它然後應用選擇器來查找複選框)。 –

0

原來你不能在每個Symfony的複選框中使用boolean(0/1)值旁邊的任何人。

感謝您的回答。