Heim  >  Artikel  >  Backend-Entwicklung  >  Offizieller Yii Framework-Leitfaden, Serie 20 – Verwenden von Formularen: Stapelerfassung von Formulareingaben

Offizieller Yii Framework-Leitfaden, Serie 20 – Verwenden von Formularen: Stapelerfassung von Formulareingaben

黄舟
黄舟Original
2017-02-13 09:17:481154Durchsuche



Manchmal möchten wir Benutzereingaben im Batch-Modus sammeln. Das heißt, Benutzer können Informationen für mehrere Modellinstanzen eingeben und alle auf einmal übermitteln. Wir nennen dies tabellarische Eingabe , da diese Eingaben normalerweise als HTML-Tabellen dargestellt werden.

Um die Tabelleneingabe zu verwenden, müssen wir zunächst ein Array von Modellinstanzen erstellen oder füllen, je nachdem, ob wir Daten einfügen oder aktualisieren möchten. Anschließend extrahieren wir die vom Benutzer eingegebenen Daten aus der Variablen $_POST und weisen sie jedem Modell zu. Der kleine Unterschied zur Einzelmodelleingabe besteht darin, dass wir $_POST['ModelClass'][$i] verwenden müssen, um die Eingabedaten zu extrahieren, anstatt $_POST['ModelClass'] zu verwenden.


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));
}

Da diese Aktion bereit ist, müssen wir mit der Arbeit an der batchUpdate-Ansicht in einer HTML-Tabelle fortfahren Die Eingabeelemente werden angezeigt.


<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 -->

Beachten Sie, dass wir im obigen Code "[$i]name" anstelle von "name" als Aufruf verwenden zweiter Parameter von CHtml::activeTextField.

Wenn Validierungsfehler vorliegen, wird die entsprechende Eingabe automatisch hervorgehoben, genau wie die einzelne Modelleingabe, die wir zuvor erläutert haben.

Das Obige ist der offizielle Leitfaden zum Yii-Framework, Serie 20 – Verwenden von Formularen: Sammeln Sie den im Formular eingegebenen Inhalt im Stapel. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn