Переопределить setValue в форме Zend - PullRequest
0 голосов
/ 23 мая 2011

Я хочу, чтобы 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);  
    }
}

Заранее спасибо ..

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Попробуйте вместо этого использовать интерфейс фильтра 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));
1 голос
/ 23 мая 2011

Вы можете расширить Zend_Form на свой собственный класс, например:

My_Form extends Zend_Form
{
  public function setValue($arg)
  {
    // My override code here
  }
}

Тогда используйте этот класс вместо Zend_Form напрямую

...