我正在测试Agile Toolkit,我不明白我做错了什么。
我有一个名为'families'的表,CRUD工作正常。
另一个名为'subfamilies'的表与族和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');
}
}
file ./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 :(得分:0)
从技术上讲,当你定义一个模型时,在family和subfamily之间没有子链接,所以你的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');
}
}