1

我正在测试敏捷工具包,但我不明白我做错了什么。

我有一个名为“家庭”的表,CRUD 工作正常。

另一个名为“子家庭”的表与家庭和 CRUD 的关系为 n 到 1,也可以正常工作。

但这是我的问题,在表“文章”中,我与家庭有 1 对 1 的关系,与子家庭和 CRUD 有另外 1 对 1 的关系,我可以添加删除和修改,但是当单击添加按钮时,如果我选择一个家庭在表格上,子家庭组合框向我显示所有子家庭,而不仅仅是来自该家庭的子家庭。

我如何指定如果选择了一个家庭,则添加表单中的组合框仅显示该家庭的子家庭亲属?

代码:

文件 ./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 模型

先感谢您,

塞尔克斯。

4

1 回答 1

0

从技术上讲,当您定义模型时,家庭和子家庭之间没有子链接,因此您的 CRUD 不会知道依赖关系。

要做你需要的,你必须完全理解以下两个例子:

接下来,创建一个用于为 Articulous 添加新记录的表单。您将需要使用 MVCForm,但必须为 sub-family 字段添加一些额外的代码。完成后,您需要将代码转换为一个单独的类,例如从 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');
    }
}
于 2011-12-05T23:38:10.403 回答