CakePHP在相关记录中预先填充外键

时间:2012-05-18 01:31:27

标签: php cakephp

我在数据库中有两个表,cardscomments。我启动并运行了CakePHP应用程序。在卡片上查看.ctp ..相关评论显示在页面底部。

我想点击添加新评论,但是专门为当前卡添加它,例如预填充卡片字段以显示当前类别。

这是我当前的查看新评论链接:

<?php

echo $this->Html->link(__('New comment'), array('controller' => 'comments','action' => 'add'));

?>

这是我的添加评论控制器:

public function add() {
    if ($this->request->is('post')) {
        $this->Comment->create();
        if ($this->Comment->save($this->request->data)) {
            $this->Session->setFlash(__('The comment has been saved'));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The comment could not be saved. Please, try again.'));
        }
    }
    $cards = $this->Comment->Card->find('list');
    $this->set(compact('cards'));
}

如何将卡设置为当前卡以获取新添加的评论?

我还希望能够添加新评论,但卡片空白..准备用户从列表中选择。

1 个答案:

答案 0 :(得分:0)

您可以将cartId附加到视图页面上的链接:

array(..., 'action'=>'add', $cartId)

然后你可以检索它:

public function add($cartId = null) {
    //...
    if (isPost) {
        //
    } else {
        $this->request->data['Comment']['cart_id'] = $cartId;
    }
    //...
}

这样,cartId将填充GET上的选择框(在POST上你想使用已发布的参数,以确保表格在验证错误时记住其发布的值)