我在cakephp工作,我是新手。我创建了一个将数据添加到数据库的视图。我希望编辑记录 - 当用户点击编辑时,相应的添加视图应该显示为填充了添加的数据。 我的问题是我在表中有外键,当我点击编辑时,文本框中填充了外键id而不是存储在该id中的文本。而且我在一些字段的添加视图中使用了一些jquery。因此,编辑这些字段时根本不会显示。以下是代码:
public function ride_offer($id = NULL) {
if (empty($this->data)) {
$this->data = $this->Rideoffer->read(null, $id);
// debug($this->data); die;
}
}
ride_offer
是添加视图 - 我希望在使用添加的数据重新填充的编辑中打开相同内容。
<?php echo $this->Form->text('Rideoffer.DropAt',
array('class' => 'address-text',
)); ?>
只是一个例子 - Rideoffer.DropAt显示了存储在Place表中的id而不是实际地址。 Rideoffer表存储Place as DropAt的参考。
我如何解决这个问题?
答案 0 :(得分:0)
如果不遵循cakephp naming conventions,你真的会让自己变得困难。这就是大多数魔法发生的方式。您还可以使用此inflector查找来帮助您进行命名。
您的操作应为ride_offer.ctp
,您的控制器操作应为public function rideOffer(){
。是的,这应该仍然按照您的方式工作,但不是蛋糕的首选惯例。
由id而不是val填充的表单字段的命名约定应为* _id。我真的不确定你是如何在id
内获得任何<?php echo $this->Form->text('Rideoffer.DropAt',
array('class' => 'address-text',
)); ?>
的
形式领域。
如果是相关表格。名字应该是
<?php echo $this->Form->text('drop_at_id',
array('class' => 'address-text',
)); ?>
然后你的控制器会通过将该模型传递给视图来神奇地填充val。
//in your controller
$this->set('dropAts', $this->RideOffer->DropAt->find('list'));
在回复您的评论时...您的ride_offer表应包含一条名为drop_at_id
而不是 dropAt
的记录