我正在尝试在 2 个模型之间实现hasone关系,但是我不能使用第二个模型(属于第一个模型的那个)中的可能选项来自动完成“添加”表单。这是我的代码:
- 模型 1: item.php
<?php
class Item extends AppModel{
var $name = 'Item';
var $primaryKey = 'id';
var $hasOne = 'CoverImage';
}
?>
- 模型 2: cover_image.php
<?php
class CoverImage extends AppModel{
var $name = 'CoverImage';
var $primaryKey = 'id';
var $belongsTo = array(
'Item' => array(
'className' => 'Item',
'foreignKey' => 'item_id'
));
}
?>
- 添加模型 2 的视图: add.ctp
<?php echo $this->Form->create('CoverImage',array('url' => array('controller' => 'admins', 'action' => 'add')));?>
<fieldset>
<legend><?php __('Info'); ?></legend>
<?php
echo $this->Form->input('item_id');
echo $this->Form->input('description');
?>
</fieldset>
<?php echo $this->Form->end(__('Create', true));?>
对于我在 Cake 的文档中看到的这种关系,在添加视图中,我应该在item_id字段中看到一个下拉列表,以便能够选择此CoverImage属于哪个项目,但下拉列表是空的(是的,我项目表中已经有一些项目)。
也许我错过了什么或者我做错了什么,但我无法弄清楚。非常感谢您提供任何线索!
编辑
我刚刚意识到的一个想法是,如果我这样做:
echo $this->Form->input('item_id', array('type'=>'text'));
而不是这个:
echo $this->Form->input('item_id');
我可以添加/编辑 *item_id* 字段,我可以在文本框中看到它的值。但是,如果我离开另一个,我只会看到一个空的保管箱,当我尝试添加/编辑CoverImage时,它不起作用,它只显示一个空白页面,甚至没有错误......
也许这是一个线索......