2016-07-08 5 views
0

Ich arbeite mit Magento 1.9.2. Ich arbeite an einer benutzerdefinierten Erweiterung.Magento - Versuchen, Daten zu speichern unter Bearbeiten in Adminhtml

Ich habe eine Grid-Tabelle erstellt, die Daten aus einer benutzerdefinierten MySQL-Tabelle abruft. Hier ist meine Tabellenstruktur:

enter image description here

Hier ist meine Config-Datei:

<?xml version="1.0"?> 
<config> 
    <modules> 
    <VivasIndustries_ExpressDelivery> 
     <version>1.0.0</version> 
    </VivasIndustries_ExpressDelivery> 
    </modules> 
    <global> 
    <models> 
     <expressdelivery> 
      <class>VivasIndustries_ExpressDelivery_Model</class> 
      <resourceModel>vivasindustries_expressdelivery_resource</resourceModel> 
     </expressdelivery> 
     <vivasindustries_expressdelivery_resource> 
     <class>VivasIndustries_ExpressDelivery_Model_Resource</class> 
     <entities> 
      <expressdelivery> 
      <table>VivasIndustries_ExpressDelivery</table> 
      </expressdelivery> 
     </entities> 
     </vivasindustries_expressdelivery_resource> 
    </models> 
    <resources> 
     <expressdelivery_setup> 
      <setup> 
       <module>VivasIndustries_ExpressDelivery</module> 
      </setup> 
      <connection> 
       <use>core_setup</use> 
      </connection> 
     </expressdelivery_setup> 
     <expressdelivery_read> 
      <connection> 
       <use>core_read</use> 
      </connection> 
     </expressdelivery_read> 
     <expressdelivery_write> 
      <connection> 
       <use>core_write</use> 
      </connection> 
     </expressdelivery_write> 
    </resources>  
    <helpers> 
     <expressdelivery> 
      <class>VivasIndustries_ExpressDelivery_Helper</class> 
     </expressdelivery> 
    </helpers> 
    <blocks> 
     <expressdelivery> 
      <class>VivasIndustries_ExpressDelivery_Block</class> 
     </expressdelivery> 
    </blocks> 
    </global> 
    <adminhtml> 
    <acl> 
     <resources> 
      <all> 
       <title>Allow Everything</title> 
      </all> 
      <admin> 
       <children> 
        <system> 
         <children> 
          <config> 
           <children> 
            <expressdeliveryadmin> 
             <title>Vivas - All</title> 
            </expressdeliveryadmin> 
           </children> 
          </config> 
         </children> 
        </system> 
       </children> 
      </admin> 
     </resources> 
    </acl> 
    <layout> 
     <updates> 
      <expressdelivery> 
       <file>expressdelivery.xml</file> 
      </expressdelivery> 
     </updates> 
    </layout> 
    </adminhtml> 
    <admin> 
     <routers> 
      <adminhtml> 
       <args> 
        <modules> 
         <VivasIndustries_ExpressDelivery before="Mage_Adminhtml">VivasIndustries_ExpressDelivery_Adminhtml</VivasIndustries_ExpressDelivery> 
        </modules> 
       </args> 
      </adminhtml> 
     </routers> 
    </admin> 
</config> 

Hier ist meine: VivasIndustries/Express/Block/Adminhtml/Delivery/Regeln/Edit/form.php :

<?php 

class VivasIndustries_ExpressDelivery_Block_Adminhtml_Delivery_Rules_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_form', array('legend'=>Mage::helper('expressdelivery')->__('SMS Information'))); 

       $Data = Mage::registry('expressdelivery_data'); 


       $fieldset->addField('FromItems', 'text', 
        array(
         'name'  => 'FromItems', 
         'label'  => Mage::helper('expressdelivery')->__('Order Status'), 
         'class'  => 'required-entry', 
         'value' => $Data->getFromItems(), 
         'required' => true, 
        ) 
       ); 

       $fieldset->addField('Price', 'text', array(
          'label'  => Mage::helper('expressdelivery')->__('SMS Text'), 
          'class'  => 'required-entry', 
          'required' => true, 
          'value' => $Data->getPrice(), 
          'name'  => 'Price', 
          'tabindex' => 1 
         )); 






       if (Mage::getSingleton('adminhtml/session')->getexpressdeliveryData()) 
        { 
         $form->setValues(Mage::getSingleton('adminhtml/session')->getexpressdeliveryData()); 
         Mage::getSingleton('adminhtml/session')->setexpressdeliveryData(null); 
        } elseif (Mage::registry('expressdelivery_data')) { 
         $form->setValues(Mage::registry('expressdelivery_data')->getData()); 
        } 
       // Add these two lines 


       $form->setUseContainer(true); 
       $this->setForm($form); 

       //// 

       return parent::_prepareForm(); 
      } 
    } 

Hier ist mein Controller:

<?php 

class VivasIndustries_ExpressDelivery_Adminhtml_DeliveryrulesController extends Mage_Adminhtml_Controller_Action 
{ 
    public function indexAction() 
    { 
     $this->_title($this->__('Express Delivery'))->_title($this->__('Express Delivery')); 
     $this->loadLayout(); 
     $this->_setActiveMenu('expressdeliveryadmin'); 
     $this->_addContent($this->getLayout()->createBlock('expressdelivery/adminhtml_delivery_rules')); 
     $this->renderLayout(); 
    } 

    public function editAction() 
    { 
     $smsnotificationId  = $this->getRequest()->getParam('id'); 
     $smsnotificationModel = Mage::getModel('expressdelivery/expressdelivery')->load($smsnotificationId); 

     if ($smsnotificationModel->getId() || $smsnotificationId == 0) { 

      Mage::register('expressdelivery_data', $smsnotificationModel); 

      $this->loadLayout(); 
      $this->_setActiveMenu('expressdeliveryadmin'); 

      $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager')); 
      $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News')); 

      $this->getLayout()->getBlock('head')->setCanLoadExtJs(true); 

      $this->_addContent($this->getLayout()->createBlock('expressdelivery/adminhtml_delivery_rules_edit')); 

      $this->renderLayout(); 
     } else { 
      Mage::getSingleton('adminhtml/session')->addError(Mage::helper('expressdelivery')->__('SMS Rule does not exist')); 
      $this->_redirect('*/*/'); 
     } 
    } 

    public function newAction() 
    { 
     $this->_forward('edit'); 
    } 

    public function saveAction() 
    { 
     if ($this->getRequest()->getPost()) { 
      try { 
       $postData = $this->getRequest()->getPost(); 
       $smsnotificationModel = Mage::getModel('expressdelivery/expressdelivery')->load($this->getRequest()->getParam('id')); 

       $smsnotificationModel->setFromItems($postData['FromItems']) 
       ->setPrice($postData['Price']) 
       ->save(); 

       Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('SMS Rule was successfully saved')); 
       Mage::getSingleton('adminhtml/session')->setexpressdeliveryData(false); 

       $this->_redirect('*/*/'); 
       return; 
      } catch (Exception $e) { 
       Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); 
       Mage::getSingleton('adminhtml/session')->setexpressdeliveryData($this->getRequest()->getPost()); 
       $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id'))); 
       return; 
      } 
     } 

     $this->_redirect('*/*/'); 
    } 

    public function deleteAction() 
    { 
     if($this->getRequest()->getParam('id') > 0) { 
      try { 
       $smsnotificationModel = Mage::getModel('expressdelivery/expressdelivery'); 

       $smsnotificationModel->setId($this->getRequest()->getParam('id')) 
        ->delete(); 

       Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('SMS Rule was successfully deleted')); 
       $this->_redirect('*/*/'); 
      } catch (Exception $e) { 
       Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); 
       $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id'))); 
      } 
     } 
     $this->_redirect('*/*/'); 
    } 
    /** 
    * Product grid for AJAX request. 
    * Sort and filter result for example. 
    */ 
    public function gridAction() 
    { 
     $this->loadLayout(); 
     $this->getResponse()->setBody(
       $this->getLayout()->createBlock('expressdelivery/adminhtml_expressdelivery_grid')->toHtml() 
     ); 
    } 
} 

Ich habe ein Problem nur mit dem Bearbeiten der Informationen und Erstellen neuer Zeilen. Ich habe keine Probleme, die Informationen anzuzeigen.

Wo ist mein Fehler, warum kann ich nicht bearbeiten, warum kann ich keine neuen Zeilen erstellen?

Bitte, wenn Sie hier kein Problem sehen, lassen Sie es mich wissen, damit ich weitere Informationen zur Verfügung stellen kann, wenn Sie brauchen.

Vielen Dank im Voraus!

Antwort

0

denke ich Problem

in Ihre Spaltennamen sein kann

magento ist Getter und Setter verwenden, co, wenn Sie verwenden:

$smsnotificationModel->setFromItems($postData['FromItems']) 
       ->setPrice($postData['Price']) 
       ->save(); 

in Ihrer Aktion speichern es ist translatedo zu:

$smsnotificationModel->setData('from_items', $postData['FromItems']) 
       ->setData('price', $postData['Price']) 
       ->save(); 

aber Ihre Spalte ist FromItems

ich su ggest zur Änderung von SQL-Spalten Namen zu:

from_items, to_items, prices das ist Magento-Standard und Refactor Ihr Code. Ich denke, es sollte helfen.

oder Sie können Ihren Code Refactoring:

$smsnotificationModel->setData('FromItems', $postData['FromItems']) 
       ->setData('Price', $postData['Price']) 
       ->save(); 

etc ...

+0

Hallo, habe es hilft? – amr

Verwandte Themen