2011-11-09 9 views
0

私は自分のサイト全体で使用できるようにフォームを含む要素を作成しようとしています。フォームで使用されるモデルにはbelongsToという別のテーブルとの関係があります。 baked addビューでは、関連するテーブルのすべての値を持つ素敵なHTML select要素が得られます。ブログの投稿を考え、カテゴリのリストから選択する。フォームを含むCakePHP要素 - テーブル関係を使用する方法

同じように動作する要素を作成するにはどうすればよいですか?

私は

$someVar = $this->requestAction('posts/add');
を使用して要素にデータを取得し、PostsControllerの

 
... 
$categories = $this->Post->Category->find('list'); 
if (isset($this->params['requested'])) { 
    return compact('categories'); 
} else { 
    $this->set(compact('categories')); 
} 

で試してみましたが、このデータは行くために必要がある場合、私はそれが

echo $this->Form->input('category_id');

によってピックアップされるようにすることを知りません私はCakePHP 2.0を使用していますが、おそらく他のバージョンにも当てはまります。

EDIT

私はほとんどなかったとOldskoolからの答えは私が$this変数に掘られ、それが行くべき場所を見つけ、それはおそらく可能だった私を示しました。鑑み 、使用:

 
$this->viewVars = $this->requestAction('posts/add'); 

及び選択要素は(すなわち自動的に)焼成アドイン・ビューのように移入されます。

答えて

2

私は自分のケーキアプリの1つで同様の構成をしています。あなたのアプローチが正しいです、あなたのフォームが認識している必要があるデータをコントローラが取得することを確認してください。以下のよう

echo $this->Form->input('category_id', array('options' => $categories)); 

に失敗:それはあなたが、このように、オプションの配列に「オプション」キーを追加することによって、「力」オプションができない場合は、上記のコードでは、ケーキは自動的に、それを拾う必要がありますあなたは以下のように小切手を追加することができます:

if(!isset($categories) || empty($categories)) { 
    // Do whatever you want here to catch the lack of $categories, like: 
    die("No categories specified in controller!"); 
} else { 
    echo $this->Form->input('category_id', array('options' => $categories)); 
} 
+0

ありがとうございます - オプション要素を入力要素に追加することができます。どのように$ categories変数に名前をつけて自動的にこれを行うのか? – Richard

+0

私はそれを持っています - $ this-> requestAction()を$ this-> viewVarsに割り当てると、すべて自動的に行われます! – Richard

関連する問題