0

我使用本教程(尤其是第 6 和第 7 课)为 Magento 创建了我自己的后端网格:http ://www.pierrefay.com/magento-developper-guide-howto-tutorial-5

一切正常。我可以为我的网格创建新的数据条目。如果我单击一个条目,则会再次显示 VarienForm,但所有文本字段都是空的。这似乎 Magento 认为我想编辑所有文本字段。但实际上我希望它首先显示条目数据。但它只显示空字段。

有谁可以帮我离开这里吗?非常感谢!

4

1 回答 1

1

您的实现可能有很多问题,但是如果没有看到您的代码就不可能说出来。尽管如此,我还是要试试。那个教程对我来说看起来不错,但我没有运行代码,所以我不能确定。我倾向于认为你可能只是错过了一些东西。在最好的情况下,在网格和选项卡中工作可能特别微妙。

在我看来,这确实是两件事之一。这听起来像

A) 您的模型数据未存储在注册表中。这意味着问题出在这部分代码中:

<?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);
        }

这部分代码所做的是在 Magento 的注册表中“注册”选定的模型。稍后在代码中,您会看到它调用:

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

填充您的表单字段。

尝试在上面的代码中放入类似这样的命令:

var_dump($testId);
die();

或者

print_r($testModel);
die();

并再次运行它。是否设置了 $testId?是否正在加载 $testModel?是注册表加载的 if 语句吗?如果没有,请追溯问题。

或者它也可能是

B)您的表单没有预先填充数据,因为列名错误。

看看代码在哪里说:

<?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',
           )
       );

您需要确保“nom”实际上是模型的属性名称之一。您是否在创建测试模型时更改了属性名称而忘记在此处更改?相应地更改这些值。

我希望这可以帮助您解决问题。祝你好运!

于 2012-04-12T01:21:53.963 回答