Extensions Tutorial: Teil 9 – Frontend Ausgabe
Im vorletzten Teil unseres Tutorial geben wir die Daten über unseren Block für die Frontend Ausgabe aus. Ich zeige Ihnen wie Sie einzelne Datensätze direkt ansprechen können, und wie Sie alle Datensätze als Collection auslesen können.
Ändern Sie dafür die Datei app/code/local/Mxperts/Tutorial/Block/Index.php
<?php
class Mxperts_Tutorial_Block_Index extends Mage_Core_Block_Template
{
function getElement($element) {
$output = '<b>'.Mage::helper('tutorial')
->__('ID').'</b>: '.$element->getTutorialId().'<br />';
$output .= '<b>'.Mage::helper('tutorial')
->__('Name').'</b>: '.$element->getName().'<br />';
$output .= '<b>'.Mage::helper('tutorial')
->__('Tags').'</b>: '.$element->getTags().'<br />';
$output .= '<b>'.Mage::helper('tutorial')
->__('Summary').'</b>: '.$element->getSummary().'<br />';
return $output;
}
protected function _toHtml()
{
$output = '<h4>'.Mage::helper('tutorial')->__('Single element').'</h4>';
$element = Mage::getModel('tutorial/tutorial')->load(1);
$output .= $this->getElement($element);
$i = 0;
$collection = Mage::getModel('tutorial/tutorial')->getCollection();
$size = $collection->getSize();
$output .= '<br /><br /><h4>'.sprintf(Mage::helper('tutorial')->__('List of %s elements'),$size).'</h4>';
foreach ($collection as $element) {
$output .= $this->getElement($element).'<br />';
}
return $output;
}
}
Erklärung:
Mit der Funktion ->load(id) können einzelne Datensätze ausgelesen werden. Die Variable $element enthält die Einzelnen Datenfelder. Über die Funktion getElement($element) werden dann die einzelnen Datenfelder zur Ausgabe formatiert.
Anstatt unserem “Hello Magento”, werden die Daten unserer Erweiterung ausgegeben. Diese Ausgabe kann nun noch optimiert werden, indem man ein eigenes Template dafür erstellt. Das werde ich evtl. in einem späteren Tutorial noch zeigen.
Sie sollten nun folgendes gelernt haben:
- Module definieren und versionieren
- Konfiguration erstellen confog.xml
- Was ist ein Block
- Was ist ein Controler
- Was ist ein Model
- Was ist ein Helper
- SQL: Tabellen definieren
- Ausgabe im Frontend- und Backend
- Backend Grid erstellen mit CRUD
Was nun noch fehlt, ist die Übersetzung der einzelnen Bezeichnungen Mage::helper(‘tutorial’)->__(‘label’). Dies folgt in unserem letzten Teil des Tutorials.
Aja, nicht schlecht – danke das du gleich beide Varianten (Einzeln und als Kollektion) verbaut hast.
Ich habe mal Probehalber die Einzel anzeige auskommentiert (falls ich mal eins von beiden nicht benötige):
//$element = Mage::getModel(‘tutorial/tutorial’)->load(1);
//$output .= $this->getElement($element);
Klappt ebenfalls hervorragend.
So jetzt auf zur letzten Etappe!
War diese Antwort hilfreich?
LikeDislikeWie kann man denn Beispielsweise eins dieser Formulare, das zum Erstellen, für den Benutzer verfügbar machen?
Jetzt ist es ja nur im Adminbereich verfügbar. Wäre cool wenn du da einen Hinweis oder einen Link zu einer Anleitng geben könntest.
War diese Antwort hilfreich?
LikeDislikeAlso erstmal: Sehr geiles Tutorial! Das macht einiges klarer.
Eine Frage hätte ich da: Wie bist du zu dem Wissen gekommen? Alles durch das php|architects buch? Wir haben das in der Firma und ich finde es eher unbrauchbar.
Wenn du dir das selber erarbeitet hast, dann Respekt!
Vielen Dank für das Tut!
Hallo tpeschka
im Prinzip ist es dasselbe wie im AdminController, nur das du das in einem FrontendController für das Frontend zugänglich machen musst ( extends Mage_Core_Controller_Front_Action).
Wenn die form Elemente so heißen wie deine Felder in der DB kannst du die so übergeben wie es auch im Tut. gezeigt wird.
Die statischen Aufrufe über Mage::getModel sind von überall gültig. Darüber kannst du dann die deine Daten verwalten.
Du kannst auch über die folgende Methode Daten an das Model übergeben: $model = Mage::getModel(‘tutorial/tutorial’)->setName(‘magento’);
Speichern geht dann über $model->save();
Das kannst du dir dann in den Controller bauchen und die Action des Forms entsprechend auf den Controller setzen.
Hoffe das hat geholfen und ich hab nicht nicht vertan. Wenn doch bitte korregieren
Gruß Olli
War diese Antwort hilfreich?
LikeDislikeone up
http://www.mxperts.de/blog/extensions-tutorial-teil-10-ubersetzungen/
War diese Antwort hilfreich?
LikeDislike