2013-02-17 87 views
0

我使用CakePHP版本2.3的工作如何保存多个表单在同一个表像phpMyAdmin

我一直在想如何拯救一个环形的形式,像phpMyAdmin的确,当你输入多形式为1台。

假设我有一个带有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

执行以下操作调用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

+0

这是最好的方法,但我认为在编辑现有产品时应该还有一个(隐藏的)产品ID输入 – thaJeztah 2013-02-17 18:20:53

+0

@Cris Sawfish:我看到您删除了ID输入,但我显然需要它,因为每3个输入(包括ID)它是一个新产品。如我错了请纠正我。无论如何,感谢您的建议,今天我会尝试一下。 TO thaJeztah:我没有看到具有product_id列的隐藏输入点,因为我知道我已经有一个id列。在这种情况下它有相同的目的,对吧? 如果我想要相同的系统,但有可能选择我想要的行数,完全像phpmyadmin那么该怎么办? – 2013-02-18 00:13:23

+0

@ JulianLivin'inChina当为数据库添加**数据创建一个表单时,您不必在表单中创建一个'input'元素。该id是根据表的模式自动创建的。因此无论您一次保存多少项目,因为您遵循发布的约定,cakephp会处理剩下的项目。正如Jeztah指出的那样,只有当你编辑一个特定的条目时,你才需要''输入''输入''。 – 2013-02-18 14:18:23

相关问题