私はupdatePasswordActionを実装していて、無効な現在のパスワードでエラーを表示していません。私はZend_Validateクラスでこれを実装して、指定されたレコード - >パスワードで使用することができませんでしたので、私はコントローラアクションで今すぐ検証しましたが、失敗した場合はエラーメッセージをフォーム要素に追加します。これは私が$form->isValid
を実行する直前です。いずれにせよ、その働き。検証が失敗すると、その要素にエラーメッセージを表示しません。どんな助けでも大歓迎です。Zend_FormがaddErrorを呼び出す際にエラーメッセージを表示しない
はFYI:私は空白の現在のパスワードを送信すると、それはその後、無効であるとフォーム自体が発生しない要素にエラーを追加する検証
class Admin_Form_UserPassword extends Katana_Form
{
public function init()
{
$element = $this->createElement('hidden', 'id');
$this->addElement($element);
$element = $this->createElement('password','password');
$element->setLabel('Current Password:');
$element->setRequired(true);
$this->addElement($element);
$element = $this->createElement('password','new_password');
$element->setLabel('New Password:');
$element->addValidator('StringLength', false, array(6,24));
$element->setRequired(true);
$element->addValidator('NotEmpty');
$this->addElement($element);
$element = $this->createElement('password','new_password_confirm');
$element->setLabel('Confirm:');
$element->addValidator('StringLength', false, array(6,24));
$element->addValidator('IdenticalField', false, array('new_password', 'Confirm Password'));
$element->setRequired(true);
$this->addElement($element);
$this->addElement('submit', 'submit', array('label' => 'Submit'));
}
}
public function updatePasswordAction()
{
$resourceModel = new Core_Model_Resource_User();
$form = new Admin_Form_UserPassword();
$form->setMethod(Katana_Form::METHOD_POST);
$form->setAction($this->getActionUrl('update-password'));
if($this->getRequest()->isPost()){
$id = $this->getRequest()->getParam('id');
$record = $resourceModel->find($id)->current();
$currPassword = $record->password;
$typedPassword = md5($this->getRequest()->getParam('password'));
if($currPassword !== $typedPassword){
$form->getElement('password')->addError('Current password is incorrect.');
}
if($form->isValid($_POST)){
$data = $form->getValues();
$result = $resourceModel->updatePassword($id, $data['new_password']);
if($result){
$this->redirectSimple('list');
}
}
} else {
$id = $this->getRequest()->getParam('id');
$recordData = array(
'id' => $id
);
$form->populate($recordData);
}
$this->getView()->form = $form;
}
「働いていない」とはどういう意味ですか?いくつかのエラーはありますか?何も起こりません? – BartekR
無効なcurrentpasswordを送信すると、エラーメッセージが表示されません。 ($ form-> isValid($ _ POST)){ – jkushner
()を実行する直前に、updatePasswordAction内で、私は$ form-> getElement( 'password') - > addError 'Zend_Form_Element :: addError()'は追加の関数であり、それらを取得するには 'Zend_Form :: getErrorMessages()'を使う必要があります。あなたは 'getErrorMessagess()'を使っていますか? – BartekR