Heim > PHP-Framework > YII > Hauptteil

So verwenden Sie Formulare im YII-Framework

(*-*)浩
Freigeben: 2019-11-26 17:09:25
Original
2294 Leute haben es durchsucht

So verwenden Sie Formulare im YII-Framework

So erstellen Sie eine Formularseite, auf der Benutzer Daten übermitteln können. Auf der Seite wird ein Formular angezeigt, das ein Namenseingabefeld und ein E-Mail-Eingabefeld enthält. Nach der Übermittlung dieser beiden Informationsteile werden auf der Seite die vom Benutzer eingegebenen Informationen angezeigt.                   (Empfohlenes Lernen: yii-Framework )

Um dieses Ziel zu erreichen, müssen Sie neben der Erstellung einer Operation und zwei Ansichten auch ein Modell erstellen.

In diesem Tutorial lernen Sie:

Erstellen Sie ein Modell, um die vom Benutzer über das Formular eingegebenen Daten darzustellen.

Deklarieren Sie Regeln zur Validierung die Eingabedaten

HTML-Formular in der Ansicht generieren

Modell erstellen

Die Modellklasse EntryForm stellt die vom Benutzer angeforderten Daten dar. Die Klasse ist wie folgt und wird in der Datei models/EntryForm.php gespeichert.

<?php

namespace app\models;

use Yii;
use yii\base\Model;

class EntryForm extends Model
{
    public $name;
    public $email;

    public function rules()
    {
        return [
            [[&#39;name&#39;, &#39;email&#39;], &#39;required&#39;],
            [&#39;email&#39;, &#39;email&#39;],
        ];
    }
}
Nach dem Login kopieren

Diese Klasse erbt von einer von Yii bereitgestellten Basisklasse yiibaseModel, die normalerweise zur Darstellung von Daten verwendet wird.

信息: yii\base\Model 被用于普通模型类的父类并与数据表无关。yii\db\ActiveRecord 通常是普通模型类的父类但与数据表有关联(译注:yii\db\ActiveRecord 类其实也是继承自 yii\base\Model,增加了数据库处理)。
Nach dem Login kopieren

Die EntryForm-Klasse enthält zwei öffentliche Mitglieder: Name und E-Mail, die zum Speichern vom Benutzer eingegebener Daten verwendet werden. Es enthält außerdem eine Methode namens „rules()“, die eine Sammlung von Datenvalidierungsregeln zurückgibt. Die oben genannten Validierungsregeln geben Folgendes an:

Sowohl der Name als auch die E-Mail-Werte sind erforderlich

Der E-Mail-Wert muss der E-Mail-Regelüberprüfung genügen

Wenn Sie einen haben Wenn das EntryForm-Objekt vom Benutzer übermittelte Daten verarbeitet, können Sie dessen Methode „validate()“ aufrufen, um die Datenvalidierung auszulösen. Wenn bei der Datenvalidierung ein Fehler auftritt, wird das Attribut hasErrors auf true gesetzt. Wenn Sie wissen möchten, welcher Fehler aufgetreten ist, rufen Sie getErrors auf.

<?php
$model = new EntryForm();
$model->name = &#39;Qiang&#39;;
$model->email = &#39;bad&#39;;
if ($model->validate()) {
    // 验证成功!
} else {
    // 失败!
    // 使用 $model->getErrors() 获取错误详情
}
Nach dem Login kopieren

Aktion erstellen

Als nächstes müssen Sie im Site-Controller eine Eingabeoperation für das neue Modell erstellen.

<?php

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\EntryForm;

class SiteController extends Controller
{
    // ...现存的代码...

    public function actionEntry()
    {
        $model = new EntryForm;

        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            // 验证 $model 收到的数据

            // 做些有意义的事 ...

            return $this->render(&#39;entry-confirm&#39;, [&#39;model&#39; => $model]);
        } else {
            // 无论是初始化显示还是数据验证错误
            return $this->render(&#39;entry&#39;, [&#39;model&#39; => $model]);
        }
    }
}
Nach dem Login kopieren

Dieser Vorgang erstellt zunächst ein EntryForm-Objekt. Versuchen Sie dann, vom Benutzer übermittelte Daten von $_POST zu sammeln, die von der yiiwebRequest::post()-Methode von Yii gesammelt werden. Wenn das Modell erfolgreich mit Daten gefüllt wurde (d. h. der Benutzer hat das HTML-Formular übermittelt), ruft die Operation „validate()“ auf, um sicherzustellen, dass der Benutzer gültige Daten übermittelt hat.

信息: 表达式 Yii::$app 代表应用实例,它是一个全局可访问的单例。 同时它也是一个服务定位器, 能提供 request,response,db 等等特定功能的组件。 在上面的代码里就是使用 request 组件来访问应用实例收到的 $_POST 数据。
Nach dem Login kopieren

Nachdem der Benutzer das Formular abgeschickt hat, rendert der Vorgang eine Ansicht mit dem Namen „entry-confirm“, um die vom Benutzer eingegebenen Daten zu bestätigen. Wenn das Formular gesendet wird, ohne das Formular auszufüllen, oder wenn die Daten Fehler enthalten (Übersetzer: Beispielsweise ist das E-Mail-Format falsch), rendert die Eingabeansicht die Ausgabe zusammen mit dem Formular und den Details des Validierungsfehlers.

Hinweis: In diesem einfachen Beispiel präsentieren wir nur die Bestätigungsseite mit gültigen Daten. In der Praxis sollten Sie die Verwendung von „refresh()“ oder „redirect()“ in Betracht ziehen, um das Problem der wiederholten Formularübermittlung zu vermeiden.

Ansicht erstellen?

Schließlich zwei Ansichtsdateien erstellen: Eingabe-Bestätigung und Eingabe. Sie werden durch die soeben erstellte Eingabeoperation gerendert.

In der Eingabebestätigungsansicht werden lediglich der übermittelte Name und die E-Mail-Daten angezeigt. Die Ansichtsdatei sollte unter „views/site/entry-confirm.php“ gespeichert werden. Die

<?php
use yii\helpers\Html;
?>
<p>You have entered the following information:</p>
<ul>
    <li><label>Name</label>: <?= Html::encode($model->name) ?></li>
    <li><label>Email</label>: <?= Html::encode($model->email) ?></li>
</ul>
Nach dem Login kopieren

Eingabeansicht zeigt ein HTML-Formular an. Ansichtsdateien sollten in „views/site/entry.php“ gespeichert werden.

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, &#39;name&#39;) ?>
    <?= $form->field($model, &#39;email&#39;) ?>
    <div class="form-group">
        <?= Html::submitButton(&#39;Submit&#39;, [&#39;class&#39; => &#39;btn btn-primary&#39;]) ?>
    </div>
<?php ActiveForm::end(); ?>
Nach dem Login kopieren

Verwenden Sie Ihren Browser, um auf die folgende URL zuzugreifen, um zu sehen, ob sie funktioniert:

http://hostname/index.php?r=site/entry
Nach dem Login kopieren

Sie werden eine Seite sehen, die ein Formular mit zwei Eingabefeldern enthält. Vor jedem Eingabefeld befindet sich eine Beschriftung, die die Art der einzugebenden Daten angibt. Wenn Sie auf die Schaltfläche „Senden“ klicken, ohne etwas auszufüllen, oder eine E-Mail-Adresse mit einem falschen Format eingeben, wird unter dem entsprechenden Eingabefeld eine Fehlermeldung angezeigt.

So verwenden Sie Formulare im YII-FrameworkNachdem Sie gültige Namens- und E-Mail-Informationen eingegeben und abgesendet haben, wird eine Bestätigungsseite mit den von Ihnen übermittelten Daten angezeigt.

So verwenden Sie Formulare im YII-Framework

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Formulare im YII-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
yii
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