Magento – Passwort Reset / Erneuerung klappt nicht nach Klick in Transaktionsemail “… controllers/AccountController.php “

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!

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

2 comments on “Magento – Passwort Reset / Erneuerung klappt nicht nach Klick in Transaktionsemail “… controllers/AccountController.php “”

  1. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *