Hallo
beschäftigte mich seit kurzen mit der Modulentwicklung bei Magento und arbeite die Quick Start Serie durch.
Ich habe bei mir die Magento Community Version 1.9.1 installiert und bin bei Part 3 der Quick Start Serie https://youtu.be/mh9VxfUZTNk
Im Part 3 geht es darum das Modul CheckoutComments mit eigener Datenbanktabelle umzusetzen. Leider komme ich im Moment nicht weiter...
Mein Problem ist, dass im letzten Bestellschritt Schritt ein Ajax Requst fehlschlägt mit einem 500 Internal Server Error. Ich werde zum Warenkorb weitergeleitet.
Wenn ich das Modul über die XML Datei über den Parameter false deaktiviere dann kann ich erfolgreich eine Bestellung absetzen.
Ich habe mir zum Debuggen das Modul Firegento installiert und mich bei dem Event zum Speichern des Kommentars eingeklingt. Aber auch dies bringt mich nicht weiter...
Meine Observer.php sieht folgendermaßen aus:
<?php
class Practice_CheckoutComments_Model_Observer {
public function prepareCheckoutComment($observer) {
$message = $observer->getControllerAction()
->getRequest()
->getPost('checkoutcomments');
Mage::getSingleton('core/session')->setCheckoutComment($message);
}
public function saveCheckoutComment($observer) {
// log object to firegento
#Mage::helper('firegento/log')->debug($observer);
$order = $observer->getOrder();
$message = Mage::getSingleton('core/session')->getCheckoutComment(true);
// log variable to firegento
#Mage::helper('firegento/log')->log('$message: '.$message);
if( !$order || empty($message) ) {
return;
}
Mage::helper('firegento/log')->log('Order-Number: '.$order->getId());
Mage::helper('firegento/log')->log('Message: '.$message);
$commentModel = Mage::getModel('checkoutcomments/comment');
Mage::helper('firegento/log')->debug($commentModel);
$commentModel->setOrderId($order->getId());
Mage::helper('firegento/log')->debug($commentModel);
$commentModel->setComment($message);
Mage::helper('firegento/log')->debug($commentModel);
$commentModel->save();
Mage::helper('firegento/log')->log('Ja nachher');
}
}
Update das Problem muss tiefer liegen, weil hier scheint alles zu funktionieren bis auf das save()...
Weiß jemand Rat?
Viele Grüße
shaggy
Solved! Go to Solution.
Mein Fehler gefunden!
Es war ein fehlender Underscore im Resource Model bei der init() Methode.
Falsch
<?php class Practice_CheckoutComments_Model_Resource_Comment extends Mage_Core_Model_Resource_Db_Abstract { protected function _construct() { $this->init('checkoutcomments/comments_table', 'comment_id'); } }
Richtig
<?php class Practice_CheckoutComments_Model_Resource_Comment extends Mage_Core_Model_Resource_Db_Abstract { protected function _construct() { $this->_init('checkoutcomments/comments_table', 'comment_id'); } }
Mein Fehler gefunden!
Es war ein fehlender Underscore im Resource Model bei der init() Methode.
Falsch
<?php class Practice_CheckoutComments_Model_Resource_Comment extends Mage_Core_Model_Resource_Db_Abstract { protected function _construct() { $this->init('checkoutcomments/comments_table', 'comment_id'); } }
Richtig
<?php class Practice_CheckoutComments_Model_Resource_Comment extends Mage_Core_Model_Resource_Db_Abstract { protected function _construct() { $this->_init('checkoutcomments/comments_table', 'comment_id'); } }