デフォルトの「無効なメールアドレスまたはパスワード」エラーではなく、ログイン時に入力したメールアドレスまたはパスワードのどれが間違っているかをユーザーに伝えようとしています。
関連するコントローラーファイルに移動しました:
.../app/code/core/Mage/Customer/controllers/accountcontroller.php
コードを141行目から次のように変更しました。
catch (Mage_Core_Exception $e) {
switch ($e->getCode()) {
case Mage_Customer_Model_Customer::EXCEPTION_INVALID_EMAIL_OR_PASSWORD:
if(Zend_Validate::is($login['username'], 'EmailAddress'))
$message = $this->__('Wrong password.');
else
$message = $this->__('That email address was not found.');
//$message = $e->getMessage();
break;
メールが登録されているかどうかを確認するために、同じファイル内のforgetPasswordPostAction()関数のZend_Validate::is()を使用しました。ただし、ログイン中は機能しません。メールアドレスが登録されていなくても、「パスワードが違います」というメッセージが常に表示されます。
Zend_Validate::is() を間違って使用しているからですか? メールが登録されているかどうかを確認する正しい機能は何ですか?
ありがとう!