2013-08-19 27 views
0

我正在開發項目的自定義模塊。我創建了一個自定義表單,並將該自定義表單的數據保存在兩個表中。現在當表單在編輯模式下打開時,我無法從兩個表中獲取保存的數據。我不知道如何解決這個問題,請幫助我。當數據來自多表時,在表單字段中設置值

這裏是我的兩個表的結構:

Table1-

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

1 | 3  | ABC 

2 | 4  | PQRS 

3 | 10  | XYZ 

Table2-

-------------------------------- 
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 

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

我在這裏安裝一個截屏給更多的解釋一下。我想在編輯模式的'左'&'右'文本區域中選擇保存的選項值,值來自表格2。

form fields

請給我建議。提前致謝。

回答

0

我找到了我的查詢的解決方案。 此擴展是最好的例子click here

爲了解決這個需要編輯許多文件,如模型,資源和塊文件。這就是爲什麼我提到這個鏈接瞭解完整的過程。那些需要注意的 大多數文件是:

  • 應用程序/代碼/社區/ [包名]/[模塊名] /Model/Resource/Pagesummary.php
  • 應用程序/代碼/社區/ [包名]/[模塊名] /Model/Pagesummary.php
  • 應用程序/代碼/社區/ [包名]/[模塊名] /Block/Adminhtml/Cms/Page/Edit/Tab/Pagesummary.php

希望這可以幫助別人!

0

Left和Right在這裏是多選字段類型,這些類型的字段以逗號分隔的字符串接收值。所以你提出的例子將以這種方式工作。 讓我們考慮您的產品型號Table 1和Table並從編輯行動通過你的表型在你控制器,你已經寫

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

在您的表單文件座/ Adminhtml /編輯/標籤/ 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); 
    } 
相關問題