2011-12-05 86 views
1

我正在測試Agile Toolkit,我不明白我在做什麼壞事。敏捷工具包CRUD

我有一個名爲'家庭'的表,其CRUD工作正常。

與家庭和CRUD的關係n與1的​​「子族」的另一個表格也很好。

但這裏是我的問題,在表'文章'我與家人和另一個1到1與亞科和CRUD作品的關係,我可以添加刪除和修改,但添加按鈕被點擊時,如果我選擇一個家庭的形式,亞科combobox顯示我所有的亞科不僅是那個家庭的亞科。

我如何指定,如果選擇了一個家庭從添加表單中的組合框只顯示該家庭的親屬親屬?

代碼:

文件./lib/Model/Articulos.php:

class Model_Articulos extends Model_Table { 
public $entity_code = 'articulos'; 

    function init(){ 
     parent::init(); 

     $this->addField('name')->mandatory(true); 
     $this->addField('description')->mandatory(true)->type('text'); 
     $this->addField('familias_id')->mandatory(true)->refModel('Model_Familias'); 
     $this->addField('subfamilias_id')->refModel('Model_Subfamilias'); 

    } 
} 

文件./page/articulos.php:

class page_articulos extends Page { 
    function init(){ 
     parent::init(); 

     $crud=$this->add('CRUD'); 
     $crud->setModel('Articulos'); 

     if($crud->grid){ 
      $crud->grid->getColumn('name'); 
      $crud->grid->getColumn('familias');  
      $crud->grid->getColumn('subfamilias');  

     } 
    } 
} 

終於可以得到mysql workbench eer model here

謝謝你,

Serxoz。

回答

0

從技術上講,當你定義一個模型時,家庭和子系列之間沒有子鏈接,所以你的CRUD不知道依賴關係。

要做到你需要什麼,你必須充分了解下面兩個例子:

接下來,增加對Articulous新記錄創建表單。您將需要使用MVCForm,但必須爲子系列字段添加一些附加代碼。完成後,您需要將代碼轉換爲獨立的類,例如從MVCForm繼承的Form_Articulos。你的代碼應該放在你表單的「setModel」方法中。

接下來,延長CRUD這樣的:

class MyCrud extends CRUD { 
    public $form_class='Form_Articulos'; 
} 

新的形式將用於編輯和添加。剩下的一件事你可能需要添加模型級驗證。

class Model_Articulous ... { 
    ... 


    function beforeUpdate(&$data){ 

     $family_id=$this->getRef('subfamilias_id')->get('familia_id'); 
     if($family_id != $this->get('familias_id')) 
      throw $this->exception('Subfamily does not belong to selected family'); 
    } 
} 
+0

前。我把Form_Articulos類的形式創建一個表單,在./page/articulos.php添加新的記錄: $形成= $這個 - >添加(「MVCForm」); $ form-> setModel('Articulos'); 但我不明白我如何獲得下拉字段來更改它的內容。 – serxoz

+0

你看過例子嗎? – romaninsh

+0

是的,在示例setValueList完成addField之前,但是當我做setModel字段是自動生成的,如果我自己生成字段我不知道如何連接模型。 – serxoz