0

データベーステーブルから2つのフィールド値を取得し、それらを組み合わせて、ラベルの表示テキストとして使用したいと思います。また、ラベルIDとしてテーブルに別のフィールド値を作成したいと思います。

AgeCatテーブルには、さまざまな年齢カテゴリが格納されます。テーブルの定義は

age_cat_id ---> primary key
range_start
range_end

例えば:

age_cat_id=>1
range_start=>18
range_end=>24

ラベルのテキストを「range_start」から「range_end」に設定する必要があります。例:「18から24」

ラベルIDはage_cat_idになります。

上記のように表示するラベルテキストをフォーマットする適切な方法は何ですか?AgeCatテーブルのすべてのレコードを取得し、find(all)を使用して文字列配列($ agecats)に格納しました。その配列から値を取得し、上記の方法に従ってフォーマットしてラベルテキストとして設定するのに問題があります。これを行うためのより良い方法があるかどうかを提案してください。

これの目的は、「range_startからrange_end」の形式に従ってAgeCatテーブルの各レコードを表示することですが、それらの値は対応するage_cat_idとして設定されます。例:18〜24は、何らかのフォーム要素を使用して表示されますが、値は1である必要があります。これは、カスタム文字列を含むドロップダウンリストがあるようなものですが、それぞれが一意の値にリンクされています。したがって、オプションが選択されると、文字列ではなく値が渡されます。

ラベルが十分でない場合、どのフォーム要素がこれに適していますか?

4

1 に答える 1

2

仮想フィールド:cakephpドキュメント。

public $virtualFields = array(
'cat_date' => 'CONCAT(AgeCat.range_start, " to ", AgeCat.range_end)'
);

PS:Cakephpの規則によれば、主キーはidという名前にする必要があります。

編集:そこを見てください:フォームヘルパー

echo $this->Form->select('id', $cat_date)

コントローラでは、次のようになります。

$cat_date=$this->Model->find('list',array('fields'=>array('id','cat_name')));

$ cat_dateを使用すると、selectに必要な値を含む配列が含まれます。

于 2012-07-30T15:20:50.553 に答える