2011-11-09 28 views
0

我試圖創建一個包含表單的元素,以便可以在我的網站中使用它。表單使用的模型與另一個表具有belongsTo關係。在烘焙添加視圖中,我使用相關表中的所有值獲得了一個很好的HTML選擇元素。考慮博客帖子並從類別列表中進行選擇。包含表單的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,儘管這可能適用於其他版本。

編輯

我幾乎沒有和來自OLDSKOOL答案給我看它可能是可能的,所以我挖成$this變量,發現在它應該去。 在視圖中,使用:

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

和選擇元件在填充作爲烘烤添加視圖(即自動地)。

回答

2

我在我自己的Cake應用程序中有一個類似的構造。你的方法是正確的,確保控制器獲取表單需要知道的數據。在上面的代碼,蛋糕應該自動把它撿起來,如果沒有,你可以「力」的選項中,通過添加「選項」鍵選擇陣列,像這樣:

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

相關問題