我在Mysql中有两个表:
1-项
列:id,name,price,category_id,created
2-分类
列:id,name,created
类别有很多项目和项目属于类别:
Class Item extends AppModel {
public $belongsTo = 'Category';
}
lass Category extends AppModel {
public $hasMany = 'Item';
}
我想编辑一个给定的项目,因此我想显示可能的类别名称来选择一个。
查看/项目/ edit.ctp
<h1>Edit Post</h1>
<?php
echo $this->Form->create('Item');
echo $this->Form->input('name');
echo $this->Form->input('price');
echo $this->Form->input('category_id');
echo $this->Form->input('created');
echo $this->Form->input('id', array('type' => 'hidden'));
echo $this->Form->end('Save Post');
?>
控制器/ ItemsController.php
public function edit($id = null){
if (!$id) {
throw new NotFoundException(__('Invalid Item'));
}
$item = $this->Item->findById($id);
if (!$item) {
throw new NotFoundException(__('Invalid Item'));
}
if (!$this->request->data) {
$this->request->data = $item;
}
if ($this->request->is(array('post', 'put'))) {
$this->Item->id = $id;
if ($this->Item->save($this->request->data)) {
$this->Session->setFlash(__('Your item has been updated.'));
return $this->redirect(array('action' => 'index'));
}
$this->Session->setFlash(__('Unable to update your item.'));
}
}
问题在于:在表格中的category_id中,我甚至看不到任何类别ID编号。
答案 0 :(得分:0)
假设User hasAndBelongsToMany Group。在您的控制器中,使用选择选项设置camelCase复数变量(在这种情况下为group - &gt; groups,或ExtraFunkyModel - &gt; extraFunkyModels)。在控制器操作中,您将添加以下内容:
$this->set('groups', $this->User->Group->find('list'));
在视图中,可以使用以下简单代码创建多重选择:
echo $this->Form->input('Group');
如果要在使用belongsTo - 或hasOne - Relation时创建选择字段,可以将以下内容添加到Users-controller(假设您的用户所属的组):
$this->set('groups', $this->User->Group->find('list'));
然后,将以下内容添加到表单视图中:
echo $this->Form->input('group_id');
答案 1 :(得分:0)
您需要在控制器中设置$categories
变量;
$this->set('categories', $this->Item->Category->find('list'));