我希望zend表单覆盖setValue函数,以便可以操作赋予函数的值。我该如何实现呢?
我目前的表单结构如下:
class My_Form_Login
{
public $Form;
public $Username;
public function __construct()
{
$this->Form = new Form_Abstract();
$this->init();
}
public function init()
{
$this->Username ->setValue('100');
}
}
class Form_Abstract extends Zend_Form
{
public function __construct($options = null)
{
parent::__construct($options);
$this->setDecorators(array( 'FormElements','FormErrors','Form' ));
}
public function setValue($value)
{
$strippedValue = stripslashes($value);
return parent::setValue($strippedValue);
}
}
提前致谢..
答案 0 :(得分:1)
您可以将Zend_Form扩展到您自己的类中,如:
My_Form extends Zend_Form
{
public function setValue($arg)
{
// My override code here
}
}
然后直接使用此类而不是Zend_Form
答案 1 :(得分:1)
请考虑使用Zend过滤器界面。例如
class My_Filter_Stripslashes implements Zend_Filter_Interface
{
public function filter($value)
{
return get_magic_quotes_gpc() ? $this->_clean($value) : $value;
}
protected function _clean($value)
{
return is_array($value) ? array_map(array($this, '_clean'), $value) : stripslashes($value);
}
}
然后在添加元素后将其应用于元素
$form->setElementFilters(array(new My_Filter_Stripslashes));