【发布时间】:2011-06-22 23:08:22
【问题描述】:
我正在尝试在 2 个模型之间实现 hasone 关系,但我无法使用第二个模型中的可能选项(belongsTo 第一个模型)让“添加”表单自动完成一)。这是我的代码:
- 模型 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 的文档中看到的,通过这种关系,在 add 视图中,我应该在 item_id 字段中看到一个下拉列表,以便能够选择哪个这个 CoverImage 属于 item,但下拉列表是空的(是的,我在 items 表中已经有一些 items)。
也许我遗漏了什么或者我做错了什么,但我想不通。非常感谢您提供任何线索!
编辑
我刚刚意识到,如果我这样做:
echo $this->Form->input('item_id', array('type'=>'text'));
而不是这个:
echo $this->Form->input('item_id');
我可以添加/编辑 *item_id* 字段,我可以在文本框中看到它的值。但是,如果我离开另一个,我只会看到一个空的 Dropbox,当我尝试添加/编辑一个 CoverImage 时,它不起作用,它只是显示一个空白页面,即使没有错误...
也许这是通往某事的线索……
【问题讨论】:
-
试试:
echo $this->Form->inputs();这是一种自动生成所有属性的表单字段的方法,一次。这不是一个直接的答案/解决方案,但也许它可以帮助您找到线索。
标签: cakephp relationship has-one