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

黄舟
Freigeben: 2023-03-05 18:00:01
Original
1117 Leute haben es durchsucht



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));
}
Nach dem Login kopieren

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 -->
Nach dem Login kopieren

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

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!