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 に答える