我使用本教程(尤其是第 6 和第 7 课)为 Magento 创建了我自己的后端网格:http ://www.pierrefay.com/magento-developper-guide-howto-tutorial-5
一切正常。我可以为我的网格创建新的数据条目。如果我单击一个条目,则会再次显示 VarienForm,但所有文本字段都是空的。这似乎 Magento 认为我想编辑所有文本字段。但实际上我希望它首先显示条目数据。但它只显示空字段。
有谁可以帮我离开这里吗?非常感谢!
我使用本教程(尤其是第 6 和第 7 课)为 Magento 创建了我自己的后端网格:http ://www.pierrefay.com/magento-developper-guide-howto-tutorial-5
一切正常。我可以为我的网格创建新的数据条目。如果我单击一个条目,则会再次显示 VarienForm,但所有文本字段都是空的。这似乎 Magento 认为我想编辑所有文本字段。但实际上我希望它首先显示条目数据。但它只显示空字段。
有谁可以帮我离开这里吗?非常感谢!
您的实现可能有很多问题,但是如果没有看到您的代码就不可能说出来。尽管如此,我还是要试试。那个教程对我来说看起来不错,但我没有运行代码,所以我不能确定。我倾向于认为你可能只是错过了一些东西。在最好的情况下,在网格和选项卡中工作可能特别微妙。
在我看来,这确实是两件事之一。这听起来像
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”实际上是模型的属性名称之一。您是否在创建测试模型时更改了属性名称而忘记在此处更改?相应地更改这些值。
我希望这可以帮助您解决问题。祝你好运!