少し遅れていますが、これはあなたの質問に対する可能な回答かもしれません。
日付要素の例:
私は同じフォームクラスのメソッドを呼び出すカスタムコールバックバリでの日付要素を作成しました。あなたはそれでカスタムバリデータを使用して独自のクラスを持っている場合
// Date picker from
$datePickerFrom = new Zend_Form_Element_Text('date_picker_from_date');
$datePickerFrom->setRequired(true)
->setDecorators($this->elementDecorators)
->setLabel('Valid From')
->addFilter('StripTags')
->addFilter('StringTrim')
->setValue(date("d/m/Y",strtotime(Zend_Date::now())))
->addValidator('Callback',true, array('callback' => array($this, 'dateCheck'));
$datePickerFrom->getValidator('Callback')->setMessage("'%value%' Cannot be in the past.");
$this->addElement($datePickerFrom);
は、あなたがこれを行うことができます:
public function dateCheck($value, $elements, $option)
{
$now = new DateTime();
$fromDate = new DateTime(str_replace('/', '-', $elements['date_picker_from_date']));
if ($fromDate < $now) {
$this->getElement('date_picker_from_date')->getValidator('Callback')->setMessage("'%value%' Cannot be in the past.");
return false;
} else (SomethingElse) {
$this->getElement('date_picker_from_date')->getValidator('Callback')->setMessage("Some other message.");
}
return true;
}
:同じフォームクラスで
$myValidatorClass = new \SomeValidaotrClass();
->addValidator('Callback',true, array('callback' => array($myValidatorClass, 'dateCheck'));
を私はカスタム検証メソッドを作成しましたまたは、自分のクラスを使用している場合:
class SomeValidaotrClass
{
public function dateCheck($value, $elements, $option)
{
// Validation code...
}
}
メソッドがpublic
でない場合、コールバックはメソッドを見つけられません。
出典
2014-12-17 11:09:49
Kal
Hey @Liyali私はzend form abstractを拡張したクラスの中にいます。その値$ usernameを取得するにはどうすればよいですか?もし愚かな質問を申し訳ありません。 –
どういう意味ですか?私はあなたがZend_Formについて話していると思います。 '$ username'は現在のユーザのユーザ名です。コンストラクタを使ってフォームに渡すことができます。ユーザーの存在を確認しようとしているだけの場合は、これを使用する必要はありません。 – Liyali
新しいユーザーを追加していますか? ($ form-> isValid($ request-> getPost()))すべてがこのisvalidメソッドによって処理されます。だから私はどのように私はユーザフォームクラスを追加するユーザー名の値を入力することができます。$ this-> getValue( 'username')を使用して取得できますか? –