if ($settings->getSetting('que_tags', 0)) {
$this->addElement('Text', 'qtags', array(
'label' => Zend_Registry::get('Zend_Translate')->_('Tags'),
'autocomplete' => 'on',
'description' => Zend_Registry::get('Zend_Translate')->_('Use commas to separate tags.'),
'allowEmpty' => false,
'filters' => array('StringTrim', 'StringToLower', new Engine_Filter_Censor()),
));
我想改变这个:
"英国"到"联合王国"。
我能够在代码上插入StringToLower
,但是当我添加SeparatorToDash
时,它不起作用。
有没有一种简单的方法可以通过在上面的代码中添加/插入一行来进行更改?
Zend提供了开箱即用的过滤器,该类称为Zend_Filter_Word_SeparatorToDash
:
$form = new Zend_Form_Element('test');
$form->addFilter(new 'Zend_Filter_Word_SeparatorToDash());
$form->setValue('United Kingdom united kingdom');
var_dump($form->getValue()); // United-Kingdom-united-kingdom
更高级的过滤可能需要从头开始创建过滤器类,或者作为替代方法,您可以随时使用 Zend_Filter_Callback
:
$form = new Zend_Form_Element('test');
$form->addFilter(
new 'Zend_Filter_Callback(
function ($value) {
return str_replace(' ', '-', strtolower($value));
}
)
);
$form->setValue('United Kingdom united kingdom');
var_dump($form->getValue()); // united-kingdom-united-kingdom
对于更多的过滤器可以检查zend过滤器文件夹,其中有很多。