2011-11-09 27 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

相关问题