2012-04-11 4 views
0

ich dieses Tutorial verwendet (vor allem Lektion 6 und 7) meine eigenen Backend-Raster für Magento zu erstellen: http://www.pierrefay.com/magento-developper-guide-howto-tutorial-5Magento Backendgrid: auf einem Dateneingabe klicken und die Daten anzuzeigen

Alles funktioniert gut. Ich kann neue Dateneinträge für mein Raster erstellen. Wenn ich auf einen Eintrag klicke, wird das VarienForm wieder angezeigt, aber alle Textfelder sind leer. Dies scheint, als ob Magento denkt, ich möchte alle Textfelder bearbeiten. Aber eigentlich möchte ich, dass die Eingabedaten zuerst angezeigt werden. Aber es zeigt nur leere Felder.

Kann mir hier jemand helfen? Danke vielmals!

Antwort

1

Es gibt viele Dinge, die mit Ihrer Implementierung falsch sein könnten, aber es ist unmöglich zu sagen, ohne Ihren Code zu sehen. Trotzdem werde ich es versuchen. Dieses Tutorial sieht gut aus, aber ich habe den Code nicht ausgeführt, daher kann ich nicht sicher sein. Ich neige dazu zu denken, dass du vielleicht etwas verpasst hast. Arbeiten in Rastern & Tabs können in den besten Zeiten besonders empfindlich sein.

Es klingt für mich wie es eines von zwei Dingen ist. Es klingt wie

A) Ihre Modelldaten werden nicht in der Registrierung gespeichert. Das bedeutet, dass das Problem in diesem Teil des Codes ist:

<?php 
class Pfay_Test_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action 
{ 
    ... 
    public function editAction() 
    { 
     $testId = $this->getRequest()->getParam('id'); 
     $testModel = Mage::getModel('test/test')->load($testId); 
     if ($testModel->getId() || $testId == 0) 
     { 
      Mage::register('test_data', $testModel); 
     } 

Was dieser Abschnitt von Code tut, ist ‚Register‘ das ausgewählte Modell in Magento-Registry. Später im Code wird Folgendes angezeigt:

$form->setValues(Mage::registry('test_data')->getData()); 

, um Ihre Formularfelder zu füllen.

Try Befehle wie diese im Code setzen oben:

var_dump($testId); 
die(); 

oder

print_r($testModel); 
die(); 

und es wieder zum Laufen. Wird $ testId gesetzt? Wird $ testModel geladen? Wird die if-Anweisung für die Registrierung geladen? Wenn nicht, verfolgen Sie das Problem zurück.

oder es könnte auch

B) Ihre Form ist nicht Daten Vorabauffüllen weil die Spaltennamen sind falsch.

Schauen Sie, wo der Code sagt:

<?php 
class Pfay_Test_Block_Adminhtml_Test_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form 
{ 
    protected function _prepareForm() 
    { 
     $form = new Varien_Data_Form(); 
     $this->setForm($form); 
     $fieldset = $form->addFieldset('test_form', array('legend'=>'ref information')); 
     $fieldset->addField('nom', 'text', 
      array(
       'label' => 'Nom', 
       'class' => 'required-entry', 
       'required' => true, 
       'name' => 'nom', 
      ) 
     ); 

Sie müssen sicherstellen, dass „nom“ in der Tat ist eine Ihrer Attributnamen des Modells. Haben Sie die Attributnamen beim Erstellen Ihres Testmodells geändert und vergessen, es hier zu ändern? Ändern Sie diese Werte entsprechend.

Ich hoffe, dass dies hilft Ihnen, Ihr Problem zu lösen. Viel Glück!

Verwandte Themen