当数据来自多个表时,在编辑模式下在表单字段中设置值

时间:2013-08-19 21:57:40

标签: magento magento-1.7

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

以下是我的两个表结构:

表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

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

这里我附加了一个屏幕截图来解释自己。我想在' left'中选择已保存的选项值。 &安培; '右'编辑模式下的文本区域,值来自table2。

form fields

请建议我。提前谢谢。

2 个答案:

答案 0 :(得分:0)

左边和右边是多选字段类型,这些字段以逗号分隔的字符串接收值。所以你提出的例子将以这种方式运作。 让我们考虑你有模型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);
    }

答案 1 :(得分:0)

我找到了查询的解决方案。 此扩展程序是最好的示例click here

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

  • 应用程序/代码/小区/ [PACKAGENAME] / [模块名] /Model/Resource/Pagesummary.php
  • 应用程序/代码/小区/ [PACKAGENAME] / [模块名] /Model/Pagesummary.php
  • 应用程序/代码/小区/ [PACKAGENAME] / [模块名] /Block/Adminhtml/Cms/Page/Edit/Tab/Pagesummary.php

希望这有助于其他人!