Sollte es bei Magento (in unserem Fall war es Version 1.6.1.0) zu folgendem Fehler kommen
Fatal error: Call to a member function setCustomerId() on a non-object in XYZ/public_html/app/code/core/Mage/Customer/controllers/AccountController.php on line 587
war dies höchstwahrscheinlich im Passwort Reset Prozess bzw. beim Versuch ein neues Passwort zu bekommen. Durch das neue Sicherheitsfeature, dass das Passwort nicht direkt ersetzt wird, sondern zuerst eine eMail verschickt wird, in der man auf einen Link klicken soll, wenn das Passwort geändert werden soll (MANN, ist der Satz schon lang…), kommt man auf die Seite, die eigentlich das neue Passwort festlegen sollte.
Leider landet man aber auf einer Fatal Error Seite, die nicht viel mehr Informationen ausspuckt als o.g..
In der genannten AccountController.php in Zeile 587 bekommt man auch nur den Hinweis, dass es was mit dem Reset des Passwortes und dem Customer zu tun hat.
Die Lösung ist die:
Die customer.xml des eigenen Templates vermisst eine bestimmte Stelle, die sich mit dem Passwort Reset auseinander setzt. Und bei dieser Stelle handelt es sich um diesen Part:
<!–
Customer password reset
–>
<customer_account_resetpassword translate=”label”>
<label>Reset a Password</label>
<remove name=”right”/>
<remove name=”left”/>
<reference name=”head”>
<action method=”setTitle” translate=”title” module=”customer”>
<title>Reset a Password</title>
</action>
</reference>
<reference name=”root”>
<action method=”setTemplate”>
<template>page/1column.phtml</template>
</action>
<action method=”setHeaderTitle” translate=”title” module=”customer”>
<title>Reset a Password</title>
</action>
</reference>
<reference name=”content”>
<block type=”customer/account_resetpassword” name=”resetPassword” template=”customer/form/resetforgottenpassword.phtml”/>
</reference>
</customer_account_resetpassword>
Entweder löscht man also die customer.xml im eigenen Template (app/design/frontend/[base oder default]/[IhrTemplate]/layout/ so dass anschließend auf die default customer.xml zugegriffen wird oder es wird der o.g. Part in die eigenene customer.xml eingefügt.
Ich habe dies am Ende VOR dem schließenden </layout> gemacht. Dann speichern und Cache neu laden. Dann bekommt man auch sein neues Passwort wieder.
Genutzt in Magento Version 1.6.1.0. Fragen? Kommentare? Anregungen? Gerne!
Und ich dachte schon, wir sind die Einzigen mit diesem Problem 😉
Danke, das hat mir sehr geholfen. Ich hatte das selbe Problem mit Magento 1.6.2. Ich geh mal davon aus, dass diese Zeilen in der customer.xml erst ab Version 1.6.x hinzugefügt wurden, da mein Template noch in der 1.5.x Version entstanden ist.