0

レシピ、アイテム、ユニットのテーブル/モデルがあります。レシピとアイテムとHABTMの関係があり、レシピを追加/編集するときにデフォルトの複数選択ボックスが表示されます。(ほとんどすべてにBakeを使用しています)。問題は、数量と単位を各アイテムに関連付ける必要があることです。

私が望んでいるUIのサンプル:

サンプル

その大きな要素は、個々のアイテムを追加/削除/編集する機能です。送信されたフォームデータを見て、jqueryとcloneを使用するとうまくいくと思います。しかし、誰かがすでにこのためのビヘイビアを作成したのではないかと思っていましたか?

現在のモデル(関連するものに短縮、つまりユーザー/メモなどを削除):

class Item extends AppModel {
    var $name = 'Item';

// id : int
// name : varchar
// unit_id : int

    var $belongsTo = array(
        'Unit' => array(
            'className' => 'Unit',
            'foreignKey' => 'unit_id'
        ),
    );

    var $hasAndBelongsToMany = array(
        'Recipe' => array(
            'className' => 'Recipe',
            'joinTable' => 'recipes_items',
            'foreignKey' => 'item_id',
            'associationForeignKey' => 'recipe_id',
        )
    );
}

class Recipe extends AppModel {
        var $name = 'recipe';
        var $displayField = "name";

// id : int
// name : varchar


        var $hasAndBelongsToMany = array(
            'Item' => array(
                'className' => 'Item',
                'joinTable' => 'recipes_items',
                'foreignKey' => 'recipe_id',
                'associationForeignKey' => 'item_id',
            )
        );
    }

class RecipesItem extends AppModel {
    var $name = 'RecipesItem';

// id : int
// quantity : int
// unit_id : int
// recipe_id : int
// item_id : int



    var $belongsTo = array(
        'Unit' => array(
            'className' => 'Unit',
            'foreignKey' => 'unit_id'
        ),
        'Recipe' => array(
            'className' => 'Recipe',
            'foreignKey' => 'recipe_id'
        ),
        'Item' => array(
            'className' => 'Item',
            'foreignKey' => 'item_id'
        )
    );
}
4

3 に答える 3

0

それは Cake ができることではありません。少し役立つ js があるかもしれませんが、そのためには独自の JavaScript を作成する必要があります。

于 2011-08-28T20:41:23.833 に答える
0

あなたが何を求めているのかよくわかりません。アイテムを追加、編集、および削除するには、アイテム コントローラーでアクションを作成する必要があります。関連付けデータ (つまり、レシピに含まれるアイテム) の保存は、フォームが正しく設定されていることを前提として、コントローラ アクションの save() メソッドによって多かれ少なかれ自動的に処理される必要があります。

好奇心から、RecipesItem モデルはどこから来たのでしょうか? それは何を表していますか。私の理解が正しければ、HABTM 関係を持つ Recipe モデルと Item モデルがあります。結合テーブルのモデルは必要ありません。recipes_items テーブルは 2 つのモデルの項目を関連付けるだけです。

于 2011-08-28T19:11:26.357 に答える