我有一個關於使用Zend_Form_Decorator_Label,爲了得到下面的結果時需要表單元素的問題,我需要得到標籤文本*,我想知道如何以最可重用的方式實現這一目標?什麼是最好的方式來添加所需的標記與標籤裝飾 - Zend
是寫新裝飾器還是重寫zend_View_helper_FormLabel? 也許還有其他方法來實現這一目標?
任何幫助將不勝感激。
我有一個關於使用Zend_Form_Decorator_Label,爲了得到下面的結果時需要表單元素的問題,我需要得到標籤文本*,我想知道如何以最可重用的方式實現這一目標?什麼是最好的方式來添加所需的標記與標籤裝飾 - Zend
是寫新裝飾器還是重寫zend_View_helper_FormLabel? 也許還有其他方法來實現這一目標?
任何幫助將不勝感激。
您可以添加下列選項之一,當您創建裝飾:
代碼示例:
$elementDecorators = array(
'ViewHelper',
array('Label', array('requiredSuffix' => ' *')),
);
$userName = new Zend_Form_Element_Text('userName');
$userName->setDecorators($elementDecorators);
$userName->setLabel('User Name');
或者對現有的裝飾或者你可以明確地設置後綴/前綴:
$userName->getDecorator('Label')->setReqSuffix(' *');
$userName->getDecorator('Label')->setOptSuffix('(Optional) ');
由於標籤裝飾添加CSS類required
到附連到被指定爲所需要的形式的輸入元件的<label>
元件,我已經能夠通過使用CSS :after
選擇與content()
聲明添加一個符號(如星號) :
label.required:after {
content: "*";
}
不過,我覺得它可能會非常棘手得到間隔的權利,以獲得星號粗體或顏色我想,等結果來呈現,我往往只是回落到使用CSS以粗體或不同顏色呈現標籤本身,然後在表單的頂部或底部添加一個圖例(需要「粗體/紅色字段」或其他顏色) (通常通過創建我自己的自定義圖例裝飾器,但有時在視圖腳本本身中)。
class FormDecorators {
public static $simpleElementDecorators = array(
array('ViewHelper'),
array('Label', array('tag' => 'span', 'escape' => false, 'requiredPrefix' => '<span class="required">* </span>')),
array('Description', array('tag' => 'div', 'class' => 'desc-item')),
array('Errors', array('class' => 'errors')),
array('HtmlTag', array('tag' => 'div', 'class' => 'form-item'))
);
}
而對於您使用的元素
$elem->setDecorators(FormDecorators::$simpleElementDecorators)
我在標籤數組中添加了requiredPrefix參數所需的前綴。
array('Label', array('tag' => 'span', 'escape' => false, 'requiredPrefix' => '<span class="required">* </span>')),