0

我正在为一个项目开发一个自定义模块。我创建了一个自定义表单,该自定义表单的数据保存在两个表中。现在,当表单以编辑模式打开时,我无法从两个表中获取保存的数据。我不知道如何解决这个问题,请帮助我。

这是我的两个表结构:

表格1-

-------------------------
id | page_id | title

1  |  3      |  ABC

2  | 4       |  PQRS

3  | 10      |  XYZ

表2-

--------------------------------
id | page_id | child  | position

1  | 3       |  8     |  left

2  | 3       |  7     |  right

3  | 3       |  15    |  right

4  | 4       |  14    |  right

5  | 4       |  15    |  left

6  | 10      |  15    |  left

--------------------------------

在这里,我附上一个屏幕截图来更多地解释我自己。我想在编辑模式下选择“左”和“右”文本区域中保存的选项值,值来自 table2。

表单域

请给我建议。提前致谢。

4

2 回答 2

0

我找到了我的查询的解决方案。这个扩展是最好的例子点击这里

要解决这个问题,需要编辑许多文件,如模型、资源和块文件。这就是为什么我提到这个链接来了解完整的过程。大多数需要注意的文件是:

  • app/code/community/[PackageName]/[ModuleName]/Model/Resource/Pagesummary.php
  • app/code/community/[PackageName]/[ModuleName]/Model/Pagesummary.php
  • app/code/community/[PackageName]/[ModuleName]/Block/Adminhtml/Cms/Page/Edit/Tab/Pagesummary.php

希望这对其他人有帮助!

于 2014-06-04T06:10:33.517 回答
0

Left 和 Right 在这里是多选字段类型,这些字段以逗号分隔的字符串接收值。因此,您提供的示例将以这种方式工作。让我们考虑一下您有模型 Table1 和 Table2 并且您通过您编写的控制器中的编辑操作传递您的表模型

$table1Id = $this->getRequest()->getParam('id');
$table1Model  = Mage::getModel('page/table1')->load($table1Id);
if ($table1Model->getId()) {
         Mage::register('page_data', $table1Model);
...

在您的表单文件 Block/Adminhtml/Edit/Tab/Form.php 中有方法 $form->setData()

if ( Mage::getSingleton('adminhtml/session')->getPageData() )
    {
        $form->setValues(Mage::getSingleton('adminhtml/session')->getPageData());
        Mage::getSingleton('adminhtml/session')->setPageData(null);
    } 
elseif ( Mage::registry('page_data') ) {
$values = Mage::registry('page_data')->getData();
$values['left'] = '8';//You can get this value from Table2 collection on basis of $values['page_id'] you got
$values['right'] = '7,15';////You can get this value from Table2 collection on basis of $values['page_id'] you got
        $form->setValues($values);
    }
于 2013-08-21T05:47:40.160 回答