【发布时间】:2014-07-24 22:49:02
【问题描述】:
我有一个使用 optgroups 的 CakePHP 添加照片视图,以便与 HABTM 相关的标签模型的数据在视图中以分组方式显示。在照片控制器中,我按如下方式发送相关的标签模型数据,以按标签类别获取标签的 optgroups 分组:
//fields shown to create optgroups eg group tags by category
$this->set('tags', $this->Photo->Tag->find('list', array(
'fields' => array('Tag.id', 'Tag.tagname', 'Tag.category'),
'conditions' => array(
'Tag.account_id' => $this->Session->read('Auth.User.account_id')))));
}
视图显示按类别很好地分组的标签。所以这部分工作得很好。
但是,在添加一张新照片并选择一个或多个要分配给它的标签后,它会正确保存照片,但不会保存分配的标签。
我相信 CakePHP saveAll 期望一个数据数组,因为它会在没有 optgroup 类别 > 标签层次结构的情况下交付,因此在添加新照片并将标签分配给照片时不会保存标签数据。
我需要做些什么来给它正确的数组来保存相关的标签?它会在我“删除”类别分组的 Create() 之后的控制器中吗?
来自 CakePHP http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html 的一些背景知识
“如果您想使用 optgroups 生成选择,只需以分层格式传递数据。这也适用于多个复选框和单选按钮,但不是 optgroups 将元素包装在字段集中:”
$options = array(
'Group 1' => array(
'Value 1' => 'Label 1',
'Value 2' => 'Label 2'
),
'Group 2' => array(
'Value 3' => 'Label 3'
)
);
echo $this->Form->select('field', $options);
输出:
<select name="data[User][field]" id="UserField">
<optgroup label="Group 1">
<option value="Value 1">Label 1</option>
<option value="Value 2">Label 2</option>
</optgroup>
<optgroup label="Group 2">
<option value="Value 3">Label 3</option>
</optgroup>
</select>
【问题讨论】:
标签: cakephp cakephp-2.0