[英]Is it possible to create custom form field attributes in Symfony 2?
在 Symfony2 表單組件中是否可以創建自定義屬性?
我問的原因是因為我正在處理 read_only 不夠的某個極端情況。
這是場景:我需要根據一些外部邏輯解析的結果來綁定數據。 這很重要,因為我可能有默認禁用的字段,但根據外部邏輯,這些字段可能會被激活。 我不能使用客戶端腳本來產生這個結果,它必須在表單屬性中被禁用。
如果我以只讀字段開頭,它將被禁用,但我永遠無法將數據綁定到它。 因此,鑒於上述外部邏輯的結果,我將無法使用 read_only。 所以這讓我別無選擇,只能使用不同的屬性來禁用該字段。
是否可以創建自定義屬性來產生這種禁用效果?
我不確定我是否正確理解了您的問題; 你想為你的表單輸入標簽添加任意屬性嗎? 例如:
<input type="text" name="myInput" myAttr="myValue" />
如果這是您想要做的,那么這是可能的,如下所示:
$form = $this->createFormBuilder($someObj)
->add('myInput', 'text', array(
'attr' => array('myAttr' => 'myValue')
)
->getForm();
文檔在這里:
很難確切地說出您要做什么,但聽起來您希望根據某些事件動態生成 forms,如下所述:
http://symfony.com/doc/2.0/cookbook/form/dynamic_form_generation.html
您的限制不是 Symfony,您的限制是 HTML 和 HTTP。 不幸的是,一旦 HTTP 請求得到滿足,一旦數據被發送到瀏覽器,服務器就無法改變渲染的內容(嗯,幾乎沒有,總是有天網)。 唯一的選擇是 JavaScript(如果他們不運行 Lynx,這可以做很多事情)。
我在 Google Groups 上看到了您的問題,根據兩者的結合,我可以告訴您,您只有兩個選擇。
你最好的選擇? 我認為用戶會喜歡 JavaScript 選項。 無論如何,在服務器端驗證用戶信息是一個很好的策略。 顯然,通過 JavaScript 驗證盡快讓用戶知道,但無論如何您都需要檢查他們在服務器上的輸入。
順便說一句,要禁用 Symfony 中的表單域,這里有分步說明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.