Heim > Backend-Entwicklung > PHP-Tutorial > Yii verwendet Formulare

Yii verwendet Formulare

WBOY
Freigeben: 2016-08-08 09:33:00
Original
794 Leute haben es durchsucht

1. Erstellen Sie ein Modell

a. Fügen Sie eine Basisklasse hinzu

verwenden Sie yii/base/Model

b eine Klassenvererbung Selbstbasisklasse

c. Erstellen Sie die erforderlichen Variablen

f 🎜> Zum Beispiel:

<?<span>php

namespace app\models;

</span><span>use</span><span> yii\base\Model;

</span><span>class</span> EntryForm <span>extends</span><span> Model
{
    </span><span>public</span> <span>$name</span><span>;
    </span><span>public</span> <span>$email</span><span>;

    </span><span>public</span> <span>function</span><span> rules()
    {
        </span><span>return</span><span> [
            [[</span>'name', 'email'], 'required'],<span>
            [</span>'email', 'email'],<span>
        ];
    }
}</span>
Nach dem Login kopieren
Diese Klasse erbt von einer von Yii bereitgestellten Basisklasse [[yiibaseModel]], die normalerweise zur Darstellung von Daten verwendet wird

Ergänzung: [[yiibaseModel]] wird als übergeordnete Klasse gewöhnlicher Modellklassen verwendet und hat nichts mit Datentabellen zu tun. [[yiidbActiveRecord]] ist normalerweise die übergeordnete Klasse einer normalen Modellklasse, hängt jedoch mit der Datentabelle zusammen (Übersetzung: Die Klasse [[yiidbActiveRecord]] erbt tatsächlich von [[yiibaseModel]] und fügt Datenbankverarbeitung hinzu).

Die Klasse

enthält zwei öffentliche Mitglieder, und

, die zum Speichern vom Benutzer eingegebener Daten verwendet werden. Es enthält auch eine Methode namens

, die eine Sammlung von Datenvalidierungsregeln zurückgibt. Die oben deklarierte Validierungsregel bedeutet: EntryForm Es sind sowohl die Werte nameemail als auch rules() erforderlich Der Wert von

  • muss die E-Mail-Regelüberprüfung nameemail erfüllen
  • Wenn Sie ein email-Objekt haben, das vom Benutzer übermittelte Daten verarbeitet, können Sie dessen Methode [[yiibaseModel::validate()|validate()]] aufrufen, um die Datenvalidierung auszulösen. Wenn die Datenvalidierung fehlschlägt, wird das Attribut [[yiibaseModel::hasErrors|hasErrors]] auf true gesetzt. Wenn Sie wissen möchten, welcher Fehler aufgetreten ist, rufen Sie [[yiibaseModel::getErrors|getErrors]] auf.

EntryForm

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

Als nächstes müssen Sie eine Operation im

Controller für das neue Modell erstellen. Die Erstellung und Verwendung von Aktionen wurde im Abschnitt „Sag Hallo“ erklärt.

siteentry

Dieser Vorgang erstellt zunächst ein
-Objekt. Versuchen Sie dann, vom Benutzer übermittelte Daten von
<?<span>php

namespace app\controllers;

</span><span>use</span><span> Yii;
</span><span>use</span><span> yii\web\Controller;
</span><span>use</span><span> app\models\EntryForm;

</span><span>class</span> SiteController <span>extends</span><span> Controller
{
    </span><span>//</span><span> ...其它代码...</span>

    <span>public</span> <span>function</span><span> actionEntry()
    {
        </span><span>$model</span> = <span>new</span><span> EntryForm;

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

            // 做些有意义的事 ...</span>

            <span>return</span> <span>$this</span>->render('entry-confirm', ['model' => <span>$model</span><span>]);
        } </span><span>else</span><span> {
            </span><span>//</span><span> 无论是初始化显示还是数据验证错误</span>
            <span>return</span> <span>$this</span>->render('entry', ['model' => <span>$model</span><span>]);
        }
    }
}</span>
Nach dem Login kopieren
zu sammeln, die von der [[yiiwebRequest::post()]]-Methode von Yii erfasst werden. Wenn das Modell erfolgreich mit Daten gefüllt wurde (d. h. der Benutzer hat das HTML-Formular übermittelt), ruft die Operation [[yiibaseModel::validate()|validate()]] auf, um sicherzustellen, dass der Benutzer gültige Daten übermittelt hat.

EntryForm Ergänzung: Der Ausdruck $_POST stellt die

Anwendungsinstanz Yii::$app dar, bei der es sich um einen global zugänglichen Singleton handelt. Gleichzeitig ist es auch ein Service Locator, der , , und andere Komponenten mit spezifischen Funktionen bereitstellen kann. Im obigen Code wird die -Komponente verwendet, um auf die von der Anwendungsinstanz empfangenen request-Daten zuzugreifen. responsedbrequest $_POSTNachdem der Benutzer das Formular abgeschickt hat, rendert der Vorgang eine Ansicht mit dem Namen , um die vom Benutzer eingegebenen Daten zu bestätigen. Wenn das Formular ohne Ausfüllen übermittelt wird oder die Daten Fehler enthalten (Übersetzer: Das E-Mail-Format ist beispielsweise falsch), wird in der

-Ansicht die Ausgabe zusammen mit dem Formular und den Details des Validierungsfehlers gerendert.

entry-confirmHinweis: In diesem einfachen Beispiel präsentieren wir nur die Bestätigungsseite mit gültigen Daten. In der Praxis sollten Sie die Verwendung von [[yiiwebController::refresh()|refresh()]] oder [[yiiwebController::redirect()|redirect()]] in Betracht ziehen, um entry

das Problem der wiederholten Formularübermittlung zu vermeiden

.

3. Erstellen Sie eine Ansicht

Schließlich erstellen Sie zwei Ansichtsdateien und

. Sie werden durch die soeben erstellte Aktion
gerendert. In der

entry-confirm-Ansicht werden lediglich die übermittelten Namens- und E-Mail-Daten angezeigt. Ansichtsdateien werden in entry gespeichert. entry

entry-confirm views/site/entry-confirm.php

Die Ansicht
<?<span>php
</span><span>use</span><span> yii\helpers\Html;
</span>?>
<p>You have entered the following information:</p>

<ul>
    <li><label>Name</label>: <?= Html::encode(<span>$model</span>->name) ?></li>
    <li><label>Email</label>: <?= Html::encode(<span>$model</span>->email) ?></li>
</ul>
Nach dem Login kopieren
zeigt ein HTML-Formular an. Ansichtsdateien werden in
gespeichert

entryviews/site/entry.php

<?<span>php
</span><span>use</span><span> yii\helpers\Html;
</span><span>use</span><span> yii\widgets\ActiveForm;
</span>?>
<?php <span>$form</span> = ActiveForm::begin(); ?>

    <?= <span>$form</span>->field(<span>$model</span>, 'name') ?>

    <?= <span>$form</span>->field(<span>$model</span>, 'email') ?>

    <div <span>class</span>="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
    </div>

<?php ActiveForm::<span>end</span>(); ?>
Nach dem Login kopieren
Die Ansicht verwendet ein leistungsstarkes Widget [[yiiwidgetsActiveForm|ActiveForm]], um HTML-Formulare zu generieren. Die und werden verwendet, um die öffnenden und schließenden Tags des Formulars darzustellen. Die Methode [[yiiwidgetsActiveForm::field()|field()]] wird zwischen diesen beiden Methoden verwendet, um das Eingabefeld zu erstellen. Das erste Eingabefeld ist für „Name“ und das zweite Eingabefeld für „E-Mail“. Verwenden Sie dann die Methode [[yiihelpersHtml::submitButton()]], um eine Senden-Schaltfläche zu generieren.

begin()end()

Denken Sie daran, Widgets zu verwenden. Sie müssen diese beiden vorstellen
<span>use</span><span> yii\helpers\Html;
</span><span>use</span> yii\wigets\ActiveForm;
Nach dem Login kopieren
Das Obige stellt die Verwendung von Formularen in Yii vor, einschließlich einiger Aspekte des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

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