0
讓我們考慮一個像下面這樣的場景:根據項目狀態處理symfony表單中的下拉項目的最佳方式是什麼?
實體車有多對多CarType這是一個不同類型的列表,每種類型可以是活動的或不活動的。
汽車形式:
$builder->add('type', 'entity', array(
'label' => 'Car Type',
'class' => 'SomeBundle:CarType',
'query_builder' => function (EntityRepository $er) {
$qb = $er->createQueryBuilder('type')
->where('type.status = :status')
->setParameter('status', 'active')
;
return $qb;
}
));
在創建階段,用戶創建Car
與活性Type
。假設我有一個管理頁面來標記Type
活動/不活動。
處理Car
編輯階段與非活動Type
有什麼關係的最佳方法是什麼?換句話說,如果某個Car
與任何Type
都有關係,並且該關聯在某個時間點處於活動狀態,並且不再處於活動狀態,則該選擇不會顯示在下拉列表中。
處理這樣的用例的最佳方式是什麼dropdwon項目可以在不同的時間框架中具有不同的狀態,但查詢只返回活動的?
一種方法是提醒用戶Car
正在使用一些不活動的Type
,但還有其他更好的方法嗎?
想想現實世界中非活動類型意味着什麼。是否有意義(在您的應用程序的域中)讓汽車在創建後更改它的類型?如果答案是否定的,也許你不應該在編輯時渲染'type'字段。如果答案是肯定的,那麼您預計會發生那些現在有不活動類型的汽車嗎?很多時候,稱爲「類型」的屬性表示不良的面向對象設計,也許你應該有像「轎車」,「敞篷車」等實體... –
@RenanTaranto如果管理員創建一輛車,請輸入錯字。他不能改變車的類型? – goto
@goto其實他的問題是關於如何在普通用戶的角度處理它,而不是管理員。我的意思是,爲了實現這些場景的良好解決方案,我們應該分析應用程序中的每個實體上下文。這個問題沒有最終的單一答案。 –