[英]Zend Framework - Static form elements
我有一個表單,用戶可以使用它來創建新商店和編輯現有商店。 當此表單用於編輯商店時,我希望用戶查看某些字段但不進行編輯,例如。 store_id。 我探索了不同的 Zend_Form_Elements 希望找到某種 static 元素,但沒有運氣。
所以我的問題是,如何使用 Zend_Form 顯示用戶無法編輯的信息?
謝謝。
僅readonly
是不夠的,因為用戶仍然可以根據需要對其進行編輯。 您應該使用$element->setIgnore(true)
來確保Zend_Form_Element
不會嘗試從 POST/GET 填充元素,我也會仔細檢查。 您必須確保進入數據庫的值永遠不會包含此元素。
最后,如果您希望元素以不同於readonly
的方式顯示,您可以通過更改元素裝飾器來實現。
我自己設法解決了這個問題。 解決方案是將元素上的視圖助手更改為 formNote 助手,例如。 $element->helper = 'formNote'。 這樣做的結果是該值顯示為純文本,而不是在表單元素內。
感謝您的回答。
當您在提交表單時不需要填充元素值時,這是一個非常好的解決方案。 等效的解決方案是使用表單元素方法setAttrib()
並禁用表單元素
$formElement->setAttrib('disable','disable')
這只會凍結元素。
但是,如果您需要填充該字段,使用以前的解決方案,您可能需要添加額外的隱藏字段,這將傳遞值。 開發自定義表單元素將是一種很好的風格,但這並不是每個開發人員都歡迎的,因此您可以使用一些棘手的方法將表單元素設置為僅文本但填充其值。 這樣,當您將元素創建為隱藏字段時,設置其值並使用 Form Element 方法setDescription()
設置和顯示元素文本值。
$formElement = new Zend_Form_Element_Hidden( 'elName',
array( 'label' => 'elLabel', 'value' => 'elValue' ) );
$formElement->setDescription( 'elValue' );
然后,您可以渲染該隱藏元素並使用$formElement->getDescription()
顯示該值。
$element->setAttrib('readonly', 'true');
http://www.w3.org/TR/html401/interact/forms.html#adef-readonly
根據 Amr Mostafa 的說法,如果您使用:
$element->setAttrib('readonly', 'true');
或者
$element->setAttribs(array('disabled' => 'disabled'));
用戶仍然通過 POST/GET 發送值,並將它們存儲在數據庫中。
我不考慮 POST/GES 值的唯一方法是:
$element->setIgnore(true)
例子:
$element = new Zend_Form_Element_Text('element');
$element->setIgnore(true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.