0

我正在使用 CakePHP 2.3 版

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

假设我有一个带有 id、name 和 content 列的表 products。为了保存我的数据,我用这 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'); ?>

当然这是行不通的,我不知道如何完成这项工作。

有人可以告诉我它是如何工作的吗?

非常感谢您的帮助。

4

1 回答 1

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

于 2013-02-17T16:51:31.887 回答