0

かなり簡単だと思ったものをコーディングしたいと思います。フィールドでのユーザー入力を受け入れてから、その値でレコードの配列を更新します。Requestオブジェクトについての理解が最小限であるため、つまずいていると思います。インデックスビューにフォームがあります

<div class="<?php echo $this->request->params['action']; ?>">

<?php
echo $this->Form->create('Invoice', array('action' => 'edit'));
echo $this->Form->input('id', array('type' => 'hidden'));
echo $this->Form->input('purchaseOrderNumber');
echo $this->Form->submit('Update Invoices', array('div' => false, 'name' => 'submit'));
?> 

<table>
    <tr>
        <th>Invoice Number</th>
        <th>Customer Name</th>
        <th>Invoice Date</th>
    </tr>

    <!-- Here is where we loop through our $invoices array, printing out invoice info -->

    <?php foreach ($invoices as $invoice): ?>
        <tr>        
            <td>
                <?php echo $this->Html->link($invoice['Invoice']['invoiceNumber'], array('action' => 'edit', $invoice['Invoice']['id'])); ?>
            </td>
            <td>
                <?php echo $invoice['Invoice']['customerName']; ?>
            </td>        
            <td>
                <?php echo $invoice['Invoice']['invoiceDate']; ?>
            </td>          
        </tr>
        <?php
    endforeach;
    echo $this->Form->end();
    ?>

</table>
</div>

十分に単純です。PurchaseOrderNumberから値を取得し、それを使用して、後続のforeach()のデータセットで返されたレコードを更新したいと思います。手がかりを得るための最善のネット検索努力にもかかわらず、私はこれをどのように行うのかわかりませんでした。私の推測では、経験豊富な開発者にとってはそれについて書く必要がないことは明らかです。

どんな助けでもいただければ幸いです。さらに説明が必要な場合は、質問してください。

4

1 に答える 1

1

Requestオブジェクトについて何がわからないのかわかりませんが、これができることです。

請求書フォームを送信すると、フォームデータがeditメソッドで利用できるようになります。InvoicesController$this->dataで(読み取り専用)または$this->request->data(変更される可能性がある)を使用して、更新クエリを実行できます。

フォームから返されるデータ$this->dataの構造は次のとおりです。

array(
    'submit' => 'Update Invoices',
    'Invoice' => array(
        'id' => '1',
        'purchaseOrderNumber' => '3'
    )
)

もちろん、送信値は必要ありませんが、他のデータを使用してid1purchaseOrderNumberの正しい請求書を取得し、3ので更新することができます。

理論上の更新は次のように構成されます。

$this->Invoice->save($this->data['Invoice']);

これはこれに似ており、より逐語的で同等です。

$update = array(
  'Invoice' => array(
    'id' => 1,
    'purchaseOrderNumber' => 3
  )
);

$this->Invoice->save($update);

他のデータと一緒に提供することによりid、Cakeは通常のINSERTを実行する代わりにUPDATEを使用することを「認識」します。

上記のコードはメモリからのものであり、エラーが含まれている可能性がありますが、うまくいけば、正しい方向を示しているはずです。

于 2012-04-12T09:51:27.063 に答える