cakephp:在单个视图中添加和编辑

时间:2013-02-22 05:25:13

标签: php templates cakephp cakephp-2.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显示了存储在Place表中的id而不是实际地址。 Rideoffer表存储Place as DropAt的参考。

我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果不遵循cakephp naming conventions,你真的会让自己变得困难。这就是大多数魔法发生的方式。您还可以使用此inflector查找来帮助您进行命名。

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

  2. 由id而不是val填充的表单字段的命名约定应为* _id。我真的不确定你是如何在id内获得任何<?php echo $this->Form->text('Rideoffer.DropAt', array('class' => 'address-text', )); ?>的 形式领域。

  3. 如果是相关表格。名字应该是

    <?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的记录