0

私は CakePHP が初めてで、ガイダンスを探しています。

私はすでにデータベースをセットアップしており、ケーキ内で再構築/エンジニアリングしようとしている以前のphpアプリケーションを構築しています。

顧客、ジョブ、ステータスの 3 つのテーブルを見ています。ジョブ レコードを編集するためのモデル/コントローラー/ビューを作成しました。'belongsTo' 関係を使用して、customers テーブルと job テーブルから値を取得し、ジョブとステータスの間に HABTM 関係を作成して、ステータス名を取得して編集ビューに表示できるようにしました。したがって、システムがジョブ テーブルからステータス ID を取得し、status_id に基づいてステータス名を表示できるようになるまで機能します。

私のデータベーステーブルには、次のものがあります。

customers
---------
id   |   first_name   |  Surname
 1          Joe            Blogs


jobs
-----------
id   | date       | status_id
 22   2013-08-01       1

statuses
------------
 id   |  description
  1      Quote Sent
  2      Invoice

jobs_statuses
-----------
 id    | job_id   | status_id
 1         22           1

そのため、ジョブ ビューでテキスト ボックスに「Quote Sent」を表示することができますが、実際に必要なのは、ジョブの現在のステータスが事前に選択された状態で、ステータス テーブルからすべてのステータスの説明を表示するドロップダウン ボックスを用意することです。ここでは、ジョブ 22 の編集ビューで「Quote Sent」が事前に選択されているドロップダウンを作成し、ドロップダウンから「Invoiced」を選択してフォームを保存できるようにしたいと考えています。これにより、それに応じてデータベースが更新されます。 、そのため、ジョブ 22 を再度呼び出すと、ステータスが「請求済み」と表示されます。

明らかに、データベースには上記よりも多くのステータスやデータなどがあります。

これを機能させる方法を理解するのに本当に苦労しています… :-(どんな助けも大歓迎です。

私はmysqlデータベースでケーキ2.3.4を使用しています

4

1 に答える 1

0

このようなステータス ドロップダウンを使用できます (ジョブ コントローラーからこれを呼び出すと仮定します)。

$statuses = $this->Job->Status->find('list');
$this->set(compact('statuses'));

そしてビューでは

echo $this->Form->create();
//etc
echo $this->Form->input('Status');

ビューの大文字とコントローラーの複数形に注意してください。これが HABTM での動作です。ドキュメントには、これに関するいくつかの段落があります(「FormHelper::inputs」に到達する前のほぼすべて)。

これにより、選択されたステータスが魔法のように事前に選択されます。ドロップダウン ボックスに ID が表示されている場合は、Status モデルのdisplayFieldを必ず変更してください。

于 2013-05-15T14:04:26.790 に答える