0 レビュー
2 回答
php-zend形式でsetValueをオーバーライドします
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
レビュー
答え :
解決策:
Zend_Formを次のように独自のクラスに拡張できます:
My_Form extends Zend_Form
{
public function setValue($arg)
{
// My override code here
}
}
次に、Zend_Formの代わりにこのクラスを直接使用します
わからない
0
レビュー
答え :
解決策:
代わりに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));
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。