0

DBに2つのテーブルがcardsありcommentsます。CakePHPアプリを起動して実行しています。カードview.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'));
}

新しく追加されたコメントのためにカードを現在のカードに設定するにはどうすればよいですか?

また、新しいコメントを追加できるようにしたいのですが、カードは空白です。ユーザーがリストから選択できるようになっています。

4

1 に答える 1

0

カートIDを表示ページのリンクに添付できます。

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

次に、次のように取得できます。

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

このようにして、cartIdはGETの選択ボックスにデータを入力します(POSTでは、投稿されたパラメータを使用して、検証エラーが発生した場合にフォームが投稿された値を記憶するようにします)

于 2012-05-18T08:40:53.827 に答える