[英]Option labels are not displaying when using DoctrineModule\Form\Element\ObjectSelect in zf2
[英]Deleting all elements of a Zend\Form\Collection (Fieldset with a DoctrineModule ObjectSelect)
我正在使用ZF2應用程序,該應用程序使用ZF2表單以及DoctrineModule水化器在簡單的CRUD系統中創建/更新實體。 實體(聯盟)與另一個實體(團隊)具有Doctrine OneToMany關聯,並且該關聯由表單站點上的Zend\\Form\\Element\\Collection
。 當創建新實體或使用該表單更新現有實體時,一切正常,除了以下一種情況:清空現有實體的關聯集合。 當我刪除集合中的所有元素並單擊“保存”時,表單將彈回,並且集合中的每個現有元素都顯示錯誤Value is required and can't be empty
。
顯示問題的視頻:http: //youtu.be/3ucRb6X61c8
碼:
看來問題歸結為InputFilter,但我似乎無法確切地找出問題所在。 最多可以刪除集合的N個條目中的(N-1)個,因此InputFilter結構本身不是問題。 或許當張貼的集合為空, Zend\\Form
不刪除分配到的每個元素現有NotEmpty驗證teams
集合?
為Union字段集提供了一個自定義輸入過濾器( 請參閱此處 ),但是teams
collection元素沒有列出輸入。 我也嘗試過完全刪除自定義InputFilter並為teams
集合添加合適的InputFilter定義,但是最終結果是相同的。
外面有人對我在這里做錯的事情有任何見解嗎?
為了解決這個問題,我更新了接收表單POST的控制器,以檢測何時已從客戶端清空集合,並手動清空實體上的集合:
if ( !isset($data['union']['teams']) || empty($data['union']['teams']) ) {
$entity->removeTeams($entity->getTeams());
}
嘗試讓您的TeamFieldset
實現Zend\\InputFilter\\InputFilterProviderInterface
,然后將以下方法添加到TeamFieldset
:
public function getInputFilterSpecification()
{
return array(
'id' => array(
'required' => false,
)
);
}
修改后的TeamFieldset
: https : TeamFieldset
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.