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:
Diese Klasse erbt von einer von Yii bereitgestellten Basisklasse [[yiibaseModel]], die normalerweise zur Darstellung von Daten verwendet wird<?<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 kopierenErgä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 Klasseenthä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 Wertename
rules()
erforderlich Der Wert von
- muss die E-Mail-Regelüberprüfung
name
- Wenn Sie ein
EntryForm
2. Vorgang erstellen<?<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 kopierenAls 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.Dieser Vorgang erstellt zunächst ein
site
entry
-Objekt. Versuchen Sie dann, vom Benutzer übermittelte Daten vonzu 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.<?<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
EntryForm
Ergänzung: Der Ausdruck$_POST
stellt dieAnwendungsinstanz
-Ansicht die Ausgabe zusammen mit dem Formular und den Details des Validierungsfehlers gerendert.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 empfangenenrequest
-Daten zuzugreifen.response
db
request
$_POST
Nachdem 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
entry-confirm
Hinweis: 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, umentry
das Problem der wiederholten Formularübermittlung zu vermeiden3. Erstellen Sie eine Ansicht.
Schließlich erstellen Sie zwei Ansichtsdateien und
. Sie werden durch die soeben erstellte Aktiongerendert. In der
entry-confirm
-Ansicht werden lediglich die übermittelten Namens- und E-Mail-Daten angezeigt. Ansichtsdateien werden inentry
gespeichert.entry
entry-confirm
views/site/entry-confirm.php
Die Ansichtzeigt ein HTML-Formular an. Ansichtsdateien werden in<?<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 kopierengespeichert
entry
views/site/entry.php
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.<?<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
begin()
end()
Denken Sie daran, Widgets zu verwenden. Sie müssen diese beiden vorstellenDas 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.<span>use</span><span> yii\helpers\Html; </span><span>use</span> yii\wigets\ActiveForm;Nach dem Login kopieren