ホームページ  >  記事  >  バックエンド開発  >  Yii Framework 公式ガイド シリーズ 20 - フォームの使用: フォーム入力のバッチ収集

Yii Framework 公式ガイド シリーズ 20 - フォームの使用: フォーム入力のバッチ収集

黄舟
黄舟オリジナル
2017-02-13 09:17:481105ブラウズ



バッチモードを通じてユーザー入力を収集したい場合があります。つまり、ユーザーは複数のモデル インスタンスの情報を入力し、それらをすべて一度に送信できます。 これらの入力は通常 HTML テーブルとして表示されるため、これを 表形式入力 と呼びます。

テーブル入力を使用するには、データを挿入するか更新するかに応じて、まずモデル インスタンスの配列を作成または設定する必要があります。 次に、ユーザーが入力したデータを $_POST 変数から抽出し、各モデルに割り当てます。単一モデル入力とのわずかな違いは、入力データを抽出するには、$_POST['ModelClass']$_POST['ModelClass'][$i] を使用する必要があることです。 /コード>。 $_POST 变量中提取用户输入的数据并将其赋值到每个模型。和单模型输入稍有不同的一点就是: 我们要使用 $_POST['ModelClass'][$i] 提取输入的数据而不是使用 $_POST['ModelClass']


public function actionBatchUpdate()
{
    // 假设每一项(item)是一个 'Item' 类的实例,
    // 提取要通过批量模式更新的项
    $items=$this->getItemsToUpdate();
    if(isset($_POST['Item']))
    {
        $valid=true;
        foreach($items as $i=>$item)
        {
            if(isset($_POST['Item'][$i]))
                $item->attributes=$_POST['Item'][$i];
            $valid=$valid && $item->validate();
        }
        if($valid)  // 如果所有项目有效
            // ...则在此处做一些操作
    }
    // 显示视图收集表格输入
    $this->render('batchUpdate',array('items'=>$items));
}

准备好了这个动作,我们需要继续 batchUpdate 视图的工作以在一个 HTML 表格中显示输入项。


<p class="form">
<?php echo CHtml::beginForm(); ?>
<table>
<tr><th>Name</th><th>Price</th><th>Count</th><th>Description</th></tr>
<?php foreach($items as $i=>$item): ?>
<tr>
<td><?php echo CHtml::activeTextField($item,"[$i]name"); ?></td>
<td><?php echo CHtml::activeTextField($item,"[$i]price"); ?></td>
<td><?php echo CHtml::activeTextField($item,"[$i]count"); ?></td>
<td><?php echo CHtml::activeTextArea($item,"[$i]description"); ?></td>
</tr>
<?php endforeach; ?>
</table>

<?php echo CHtml::submitButton(&#39;Save&#39;); ?>
<?php echo CHtml::endForm(); ?>
</p><!-- form -->

注意,在上面的代码中我们使用了 "[$i]name" 而不是 "name"

rrreee🎜🎜🎜アクションの準備ができたので、batchUpdate ビューで作業を続けて、入力項目を HTML テーブルに表示する必要があります。 🎜🎜🎜🎜🎜🎜rrreee🎜🎜🎜上記のコードでは、CHtml への呼び出しとして "name" の代わりに "[$i]name" を使用していることに注意してください。 :activeTextField 2 番目のパラメータ。 🎜🎜検証エラーがある場合、前に説明した単一モデル入力と同様に、対応する入力項目が自動的に強調表示されます。 🎜🎜上記は、Yii Framework 公式ガイド シリーズ 20 - フォームの使用: フォームに入力されたコンテンツのバッチ収集です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。 🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。