2014-01-12 107 views
0

我有一個類的屬性「主頁」,其中網址存儲在一個數組中。現在我想創建一個管理表單來編輯這個字段,但是我沒有讓它顯示存儲的值或接受爲屬性添加新的值。我所得到的只是一個空的表單字段。在數組字段|中顯示值管理生成器編輯表單| Symfony 1.4

要簡單地顯示部分中的值很容易使用下面的代碼,但是如何獲取它以使用所有先前存儲的值呈現輸入字段?

<div class="sf_admin_form_row"> 
<label> 
    <?php echo $form['homepages']->renderLabel('homepages') ?> 
</label> 
<?php foreach(sfOutputEscaper::unescape($form->getObject()->getHomepages()) as $key=>$value): ?> 
<div class="content"><?php echo $value ?></div> 
<?php endforeach ?> 
</div> 

任何幫助將不勝感激。

+0

我不確定我是否正確理解你,但我認爲你正在尋找一個選擇部件('sfWidgetFormChoice')。它可以呈現一個選擇標籤或一組無線電/複選框,用於一組值。 –

+0

這不完全是我的意思。屬性「homepages」在數據庫(doctrine數組)中存儲了一個序列化數組,這意味着我需要編輯數組,從中刪除數值或添加新數組。 –

+0

所以你想創建一個模塊來添加/編輯/刪除url數組? –

回答

1

我想要做的是創建一個嵌入式表單的集合或編寫我自己的小部件,將處理該字段。

如果您嘗試使用第一種解決方案,則必須在窗體類中反序列化您的屬性。然後遍歷數組並嵌入一個帶有一個輸入字段和一個字段值的簡單表單。然後添加一個選項來添加新值(通過嵌入另一個表單)或刪除它們。您還必須覆蓋表單的保存方法,以便正確處理該字段(即序列化該字段)。

或者,您可以創建一個小部件類,它將正確處理輸入集合的顯示(再次 - 反序列化值並顯示每個URL的輸入)。您還必須創建一個驗證器類,它將從輸入中獲取值並對其進行序列化。

+0

非常感謝Michal! –

相關問題