0

私はcakephpで働いていますnはそれが初めてです。データベースにデータを追加するためのビューを作成しました。レコードを編集したい-ユーザーが編集をクリックすると、同じ追加ビューが追加されたデータで埋められて表示されるはずです。私の問題は、テーブルに外部キーがあり、[編集]をクリックすると、テキストボックスにその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の参照がDropAtとして格納されます。

どうすればこれを解決できますか?

4

1 に答える 1

0

あなたは、 cakephpの命名規則に従わないことによって、本当に物事を難しくしています。それが魔法のほとんどが起こる方法です。このインフレクタールックアップを使用して、名前を付けることもできます。

  1. アクションはである必要がride_offer.ctpあり、コントローラーのアクションはである必要がありますpublic function rideOffer(){。はい、これはあなたが持っている方法でまだ機能するはずですが、ケーキの好ましい慣習ではありません。

  2. valsではなくidによって入力されるフォームフィールドの命名規則は、*_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',
                                               ));  ?>

次に、コントローラーは、そのモデルをビューに渡すことにより、魔法のように値を入力します。

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

あなたのコメントに応えて...あなたのride_offerテーブルはdrop_at_id notと呼ばれるレコードを含むべきです dropAt

于 2013-02-22T11:42:54.750 に答える