1

アジャイルツールキットをテストしていますが、何が悪いのかわかりません。

CRUDが正常に機能する「families」という名前のテーブルがあります。

家族との関係がn対1の「subfamilies」という名前の別のテーブルとCRUDも正常に機能します。

しかし、ここに私の問題があります。テーブル「記事」では、家族と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ワークベンチeerモデルを取得できます

前もって感謝します、

Serxoz。

4

1 に答える 1

0

技術的には、モデルを定義するとき、ファミリーとサブファミリーの間にサブリンクがないため、CRUDは依存関係を認識しません。

必要なことを行うには、次の2つの例を完全に理解する必要があります。

次に、Articulousの新しいレコードを追加するためのフォームを作成します。MVCFormを使用する必要がありますが、サブファミリーフィールドにいくつかのコードを追加する必要があります。完了したら、コードをMVCFormから継承されたForm_Articulosなどの別のクラスに変換する必要があります。コードは、フォームの「setModel」メソッド内に配置する必要があります。

次に、CRUDを次のように拡張します。

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

新しいフォームは編集と追加に使用されます。必要になる可能性のある残りの1つは、モデルレベルの検証を追加することです。

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 に答える