我有食谱,物品和单位表/模型。我与Recipe和Item有HABTM关系,在添加/编辑Recipe时我得到默认的多选框。 (我大部分时间都在使用Bake)。问题是我需要将数量和单位与每个项目相关联。
我希望的用户界面示例:
它的一个重要组成部分是添加/删除/编辑单个项目的能力。我想看看提交的表单数据,并使用一些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'
)
);
}
答案 0 :(得分:0)
不太确定你在问什么。要添加,编辑和删除项目,您需要在项目控制器中创建操作。假设您的表单设置正确,则应通过控制器操作中的save()方法自动处理保存关联数据(即配方具有的项目)。
出于好奇,RecipesItem模型来自哪里?这代表什么?如果我正确理解你,你有一个Recipe模型和一个具有HABTM关系的Item模型。您不应该为其连接表使用模型,recipes_items表只关联两个模型中的项目。
答案 1 :(得分:0)
这不是Cake可以为你做的事情。也许有一些js可以帮助你一点,但你几乎必须为此编写自己的javascript。
答案 2 :(得分:0)
你必须使用javascript将select标签“转换”为“更酷”的东西。
这是我使用的jquery-multiselect插件。您可以轻松地将其设置为用1行代码替换所有多选。
更多信息: http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/