我正在测试Agile Toolkit,我不知道我做错了什么。
我有一个名为“家庭”的表格,CRUD可以很好地工作。
另一个名为'subfamilies‘的表,其关系为n对1,与families和CRUD的关系也很好。
但这是我的问题,在表格“文章”中,我与族有1对1的关系,另外还有1对1的子族和CRUD作品,我可以添加、删除和修改,但当单击“添加”按钮时,如果我在表单上选择一个族,子族组合框会显示所有的子族,而不仅仅是来自该族的子族。
如何指定如果选择了某个族,则添加窗体中的组合框仅显示该族的子族亲属?
代码:
File./lib/Model/Armitos.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/artikulos.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模型here。
先谢谢你,
塞克索兹。
发布于 2011-12-06 07:38:10
从技术上讲,当您定义一个模型时,系列和子系列之间没有子链接,因此您的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');
}
}https://stackoverflow.com/questions/8390204
复制相似问题