Agile инструментарий CRUD - PullRequest
       21

Agile инструментарий CRUD

1 голос
/ 05 декабря 2011

Я тестирую Agile Toolkit, и я не понимаю, что я делаю плохо.

У меня есть таблица с именем 'family', с которой CRUD работает отлично.

Другая таблица с именем 'subfamilies' с отношением n к 1 с семействами и CRUD тоже работает нормально.

Но вот моя проблема, в таблице «статьи» у меня есть отношения 1 к 1 с семействами и еще 1 к 1 с подсемействами и CRUD работает, я могу добавить удаление и изменить, но когда нажата кнопка добавления, если я выберите семью в форме, выпадающий список подсемейств показывает мне все подсемейства, а не только принадлежащие к этому семейству.

Как я могу указать, что, если выбрана семья, в выпадающем списке из формы добавления отображаются только подсемейства, родственники этой семьи?

Код:

файл ./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 здесь

Заранее спасибо,

Serxoz.

1 Ответ

0 голосов
/ 06 декабря 2011

Технически, когда вы определяете модель, нет никакой под-связи между семьей и подсемейством, поэтому ваш CRUD не будет знать о зависимости.

Чтобы сделать то, что вам нужно, вы должны полностью понимать следующие два примера:

Далее создайте форму для добавления новой записи для Articulous. Вам нужно будет использовать MVCForm, но вам нужно будет добавить дополнительный код для поля подсемейства. Когда вы это сделаете, вам нужно будет преобразовать ваш код в отдельный класс, такой как Form_Articulos, унаследованный от MVCForm. Ваш код должен идти внутри метода "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');
    }
}
...