0

我在 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 显示 id 而不是存储在 Place 表中的实际地址。Rideoffer 表将 Place 的引用存储为 DropAt。

我该如何解决这个问题?

4

1 回答 1

0

如果不遵循cakephp 命名约定,您真的会让自己感到困难。大多数魔法就是这样发生的。您还可以使用此变形器查找来帮助您命名。

  1. 你的动作应该是ride_offer.ctp,你的控制器动作应该是public function rideOffer(){。是的,这仍然应该按照您的方式工作,但不是蛋糕的首选惯例。

  2. 由 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',
                                               ));  ?>

然后您的控制器将通过将该模型传递给视图来神奇地填充 vals。

//in your controller
$this->set('dropAts', $this->RideOffer->DropAt->find('list'));

作为对您的评论的回应...您的ride_offer 表应包含一条名为drop_at_id not dropAt

于 2013-02-22T11:42:54.750 回答