在CakePHP中保存HABTM数据的问题
我在控制器中保存HABTM数据时遇到问题 我有一个在CakePHP中保存HABTM数据的问题,cakephp,models,has-and-belongs-to-many,Cakephp,Models,Has And Belongs To Many,我在控制器中保存HABTM数据时遇到问题 我有一个文章模型,它与事件模型关联,因为文章可能是关于我的应用程序中的特定事件的。我已经阅读了上的CakePHP cookbook条目,因此理解了它在控制器级别上的工作方式,但在理解它在视图方面的外观时遇到了困难 我表格中的内容是文章数据的输入(标题、摘录、内容等)。然后,我需要数据库中每个事件的复选框,然后我可以选中将一篇文章与相应的事件关联起来 通常,我会有这样一个复选框: <input type="checkbox" name="event[
文章
模型,它与事件
模型关联,因为文章可能是关于我的应用程序中的特定事件的。我已经阅读了上的CakePHP cookbook条目,因此理解了它在控制器级别上的工作方式,但在理解它在视图方面的外观时遇到了困难
我表格中的内容是文章数据的输入(标题、摘录、内容等)。然后,我需要数据库中每个事件的复选框,然后我可以选中将一篇文章与相应的事件关联起来
通常,我会有这样一个复选框:
<input type="checkbox" name="event[]" value="1" />
其中,1
是场馆的ID,在我的数据库中的每个活动都要做这样的复选框,但在CakePHP中似乎不起作用
使用
$this->Form->input()
创建复选框时,我应该为字段名添加什么内容?“CakePHP”的方式是什么?我想您应该从ArticlesController::add()保存数据
所以你的观点应该是
添加.ctp
<?php
echo $this->Form->create('Article');
echo $this->Form->input('Article.title', array('type' => 'text'));
echo $this->Form->input('Article.excerpt', array('type' => 'textarea'));
echo $this->Form->input('Article.title', array('type' => 'textarea'));
/** Generate multiple checkboxes, assumung that your array of events is $events **/
foreach($events as $index => $evt) {
echo $this->Form->input('Event'.$index.'.id', array('type' => 'checkbox', 'value' => $evt['Event']['id']));
}
echo $this->Form->submit('save');
?>
发送到控制器的受尊重数据可以通过$this->request->data['Event']
数组访问。如果已正确设置关系,则数据保存
是自动为您完成的
我希望这会有所帮助。假设您已在控制器中设置事件,如中所述:
然后您的输入应该如下所示,基本上与烹饪书中的示例类似,添加了值为的复选框
:
$this->Form->input('Event', array('multiple' => 'checkbox'));
这将为您提供一个格式正确的复选框列表,其中的事件displayField
作为标签
您的下一个问题可能是验证,因此也请看一看您能否更具体地描述一下您的表单?也许你应该提供表单视图。我的数据库中有一个包含所有事件的数组。我想为每个事件生成一个复选框,以便在提交表单时保存HABTM关系,但我不知道CakePHP希望在我的$this->form->input()
call中为字段名设置什么格式。谢谢。这就解决了问题。原来我需要在我的
上将名称
属性设置为数据[Event][Event][]
。
$this->set('events', $this->Event->find('list'));
$this->Form->input('Event', array('multiple' => 'checkbox'));