如何在phpmyadmin等同一个表中保存多个表单

时间:2013-02-17 15:43:28

标签: cakephp

我正在使用CakePHP 2.3版

我一直在想如何在为1个表输入多个表单时保存像phpmyadmin这样的循环表单。

假设我有一个包含id,name和content列的表产品。 为了保存我的数据,我创建了一个表格,其中3个输入乘以3。 所以这给了我这样的东西:

<?php echo $this->Form->create('Product'); ?>

<!-- Form for product 1 -->
<?php echo $this->Form->input('name', array('label' => "Name")); ?>
<?php echo $this->Form->input('content', array('label' => "Content")); ?>
<?php echo $this->Form->input('id'); ?>

<!-- Form for product 2 -->
<?php echo $this->Form->input('name', array('label' => "Name")); ?>
<?php echo $this->Form->input('content', array('label' => "Content")); ?>
<?php echo $this->Form->input('id'); ?>

<!-- Form for product 3 -->
<?php echo $this->Form->input('name', array('label' => "Name")); ?>
<?php echo $this->Form->input('content', array('label' => "Content")); ?>
<?php echo $this->Form->input('id'); ?>

<?php echo $this->Form->end('done'); ?>

当然这不起作用,我也不知道如何完成这项工作。

有人能告诉我它是如何运作的吗?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

input()方法进行以下调用:

...
echo $this->Form->input('Product.0.name', array('label' => 'Name'));
echo $this->Form->input('Product.0.content', array('label' => 'Content'));

echo $this->Form->input('Product.1.name', array('label' => 'Name'));
echo $this->Form->input('Product.1.content', array('label' => 'Content'));

echo $this->Form->input('Product.2.name', array('label' => 'Name'));
echo $this->Form->input('Product.2.content', array('label' => 'Content'));
...

前面的代码应输出以下表单元素

<input type="text" id="Product0name" name="data[Product][0][name]">
<input type="teaxtarea" id="Product0Content" name="data[Product][0][Content]">

<input type="text" id="Product1name" name="data[Product][1][name]">
<input type="teaxtarea" id="Product1Content" name="data[Product][1][Content]">

<input type="text" id="Product2name" name="data[Product][2][name]">
<input type="teaxtarea" id="Product2Content" name="data[Product][2][Content]">

可以非常轻松地使用saveAll()方法由您的控制器发布和保存。 另请查看CakePHP文档:Field-naming-conventions