Nun sind wir fast am Ende unseres Tutorials angelangt. In Teil 8 werden wir nun noch das Ändern integrieren.

1. Dateistruktur anpassen

app/
   etc/
      modules/
        - Mxperts_All.xml (Oder Ihre Firmenname IhreFirme_All.xml)
   code/
      local/
         Mxperts/ (Oder Ihre Firmenname IhreFirme_All.xml)
            Tutorial/ (Bezeichnung Ihrer Erweiterung)
               Block/
                 - Index.php
                 Admin/
                   - Main.php
                   Main/
                     - Grid.php
                   - New.php
                   New/
                     - Form.php
                   - Edit.php
                   Edit/
                     - Form.php
               controllers/
                 - AdminController.php
                 - IndexController.php
               etc/
                 - config.xml
               Helper/
                 - Data.php
               Model/
                 - Tutorial.php
                 Mysql4/
                   - Tutorial.php
                   Tutorial/
                     - Collection.php
               sql/
                 tutorial_setup/
                    - mysql4-install-0.2.0.php
                    - mysql4-upgrade-0.1.0-0.2.0.php

Wir haben den Block -> Admin ergänzt.

1. Legen Sie die Datei code/local/Mxperts/Tutorial/Block/Admin/Edit.php an

<?php
class Mxperts_Tutorial_Block_Admin_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
{
    public function __construct()
    {
        parent::__construct();

        $this->_blockGroup = 'tutorial';
        $this->_mode = 'edit';
        $this->_controller = 'admin';

        if( $this->getRequest()->getParam($this->_objectId) ) {
            $tutorialData = Mage::getModel('tutorial/tutorial')
                ->load($this->getRequest()->getParam($this->_objectId));
            Mage::register('frozen_tutorial', $tutorialData);
        }
    }

    public function getHeaderText()
    {
        return Mage::helper('tutorial')
          ->__("Edit Element'%s'",
               $this->htmlEscape(Mage::registry('frozen_tutorial')->getName()));
    }
}

2. Legen Sie die Datei code/local/Mxperts/Tutorial/Block/Admin/Edit/Form.php an

<?php
class Mxperts_Tutorial_Block_Admin_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
{
    protected function _prepareForm()
    {
        $form = new Varien_Data_Form(array(
            'id'        => 'edit_form',
            'action'    => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
            'method'    => 'post'
        ));

        $fieldset = $form->addFieldset('edit_tutorial', array('legend' => Mage::helper('tutorial')->__('Element Details')));

        $fieldset->addField('name', 'text', array(
            'name'      => 'name',
            'title'     => Mage::helper('tutorial')->__('Name'),
            'label'     => Mage::helper('tutorial')->__('Name'),
            'maxlength' => '50',
            'required'  => true,
        ));

        $fieldset->addField('tags', 'text', array(
            'name'      => 'tags',
            'title'     => Mage::helper('tutorial')->__('Tags'),
            'label'     => Mage::helper('tutorial')->__('Tags'),
            'maxlength' => '255',
            'required'  => true,
        ));

        $fieldset->addField('summary', 'textarea', array(
            'name'      => 'summary',
            'title'     => Mage::helper('tutorial')->__('Summary'),
            'label'     => Mage::helper('tutorial')->__('Summary'),
            'style'     => 'width: 98%; height: 200px;',
            'required'  => true,
        ));

        $form->setUseContainer(true);
        $form->setValues(Mage::registry('frozen_tutorial')->getData());
        $this->setForm($form);
        return parent::_prepareForm();
    }
}

3. Fügen Sie die Funktionen editAction() und saveAction() zur Datei code/local/Mxperts/Tutorial/controllers/AdminController.php hinzu

    public function editAction()
    {
        $this->loadLayout();
        $this->_addContent($this->getLayout()
           ->createBlock('tutorial/admin_edit'));
        $this->renderLayout();
    }

    public function saveAction()
    {
        $tutorialId = $this->getRequest()->getParam('id', false);
        if ($data = $this->getRequest()->getPost()) {
            $tutorial = Mage::getModel('tutorial/tutorial')
              ->load($tutorialId)->addData($data);
            try {
                $tutorial->setId($tutorialId)->save();

                Mage::getSingleton('adminhtml/session')
                   ->addSuccess(Mage::helper('tutorial')
                   ->__('Element was saved successfully'));
                $this->getResponse()->setRedirect($this->getUrl('*/*/'));
                return;
            } catch (Exception $e){
                Mage::getSingleton('adminhtml/session')
                ->addError($e->getMessage());
            }
        }
        $this->_redirectReferer();
    }

Extensions Tutorial: Teil 7 – CRUD (Delete)

Extensions Tutorial: Teil 9 – Frontend Output