Cakephp 如何预填充saveAll表单?

Cakephp 如何预填充saveAll表单?,cakephp,Cakephp,我有一个表格,看起来像这样: Delete [Publisher One ] [] [Publisher Two ] [] [Publisher Three] [] Add[ ] 因此,基本上,每个出版商都会出现在页面上自己的字段中。我可以修改任何发布者的名称,删除任何发布者,或添加新的发布者,所有这些都在一个表单上,只需保存所有表单即可。我知道这不会支持10000行以下,但我正在使用Cake

我有一个表格,看起来像这样:

                      Delete
    [Publisher One  ] []
    [Publisher Two  ] []
    [Publisher Three] []
 Add[               ]
因此,基本上,每个出版商都会出现在页面上自己的字段中。我可以修改任何发布者的名称,删除任何发布者,或添加新的发布者,所有这些都在一个表单上,只需保存所有表单即可。我知道这不会支持10000行以下,但我正在使用CakePHP重新制作一个现有的工具,并且我确信会有一个可管理的行数


问题是,在第一次加载时,我必须预先填充字段。现在,在CakePHP书中,我应该使用Model.n.field创建表单。但是,我使用$this->Model->find('all')提取的数据是$data[n][Model][field]形式的。我是否必须自己处理数据以获得$data[Model][n][field]形式的数据,或者是否有一种简单的方法可以从find命令中实现这一点,或者使用一个助手函数将数据从一个形式转换为另一个形式?

我同意,在Cake中以不同形式移动数据并不是最容易的。但你为什么不这样做呢:

  • 在控制器中提取数据$数据是以第n条记录作为第一个索引的数组;然后是Modelname,然后是fieldname(很抱歉让人费解的措辞——这正是您在上面所做的)
在你看来:

 foreach( $data as $publisher-id => $record )
 {
   echo '<tr><td>' . $record['Model']['publisher_name'] . '</td>';
   echo '<td>' . $form->input( 'Model.publisher_id', array( 'value' => $model['Modelname']['publisher_id']) ) . '</td></tr>';
 }
foreach($publisher-id=>$record的数据)
{
回显'.$record['Model']['publisher_name'].';
回显“”。$form->input('Model.publisher_id',数组('value'=>$Model['Modelname']['publisher_id'])。';
}
因此,我并不认为您需要破坏数据或find操作返回的数组。试着想想你将如何输出它,你必须对此有点聪明。

Set类可能可以为您执行重新处理-请参阅和。另外,其他集合类方法也可能对您有用