我正在使用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'); ?>
当然这不起作用,我也不知道如何完成这项工作。
有人能告诉我它是如何运作的吗?
非常感谢你的帮助。
答案 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