YII bietet ein robustes Framework für die Handhabung von Formularen und die Überprüfung der Benutzereingabe. Die Kernkomponente ist das Widget yii\widgets\ActiveForm
, was den Prozess erheblich vereinfacht. Dieses Widget generiert automatisch HTML für Ihre Formularfelder basierend auf den Attributen Ihres Modells und deren Validierungsregeln.
Lassen Sie uns mit einem Beispiel veranschaulichen. Angenommen, Sie haben ein ContactForm
-Modell:
<code class="php"><?php namespace app\models; use yii\base\Model; class ContactForm extends Model { public $name; public $email; public $subject; public $body; public function rules() { return [ [['name', 'email', 'subject', 'body'], 'required'], ['email', 'email'], ]; } }</code></code>
Aus Ihrer Ansicht nach verwenden Sie ActiveForm
wie folgt:
<code class="php"><?php $form = \yii\widgets\ActiveForm::begin(); ?> = $form->field($model, 'name')->textInput() ?> = $form->field($model, 'email')->textInput() ?> = $form->field($model, 'subject')->textInput() ?> = $form->field($model, 'body')->textarea(['rows' => 6]) ?> <div class="form-group"> = Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> </div> <?php \yii\widgets\ActiveForm::end(); ?></code>
Dies erzeugt eine Form mit Eingabefeldern für jedes Attribut. Die rules()
-Methode im Modell definiert die Validierungsregeln. Wenn das Formular eingereicht wird, überprüft $model->validate()
die Eingabe gegen diese Regeln. Fehlermeldungen werden automatisch neben den jeweiligen Feldern angezeigt, wenn die Validierung fehlschlägt. Sie können über $model->attributes
auf validierte Daten zugreifen. Denken Sie daran, die Einreichung der Formulareinreichung in Ihrer Controller -Aktion zu behandeln.
Die Sicherung von Formen in yii umfasst mehrere wichtige Schritte:
Html::encode()
-Funktion ist Ihr Freund. Verwenden Sie es, um HTML -Zeichen in allen Daten zu entkommen, die Sie von den Benutzereingaben anzeigen.yii\web\CsrfToken
-Komponente verarbeitet dies automatisch. Stellen Sie sicher, dass Sie yii\widgets\ActiveForm
verwenden, da es automatisch den CSRF -Schutz enthält.safeAttributes()
-Methode in Ihrem Modell sorgfältig, um anzugeben, welche Attribute sicher sind, um massenhaft zugewiesen zu werden. YII vereinfacht Datenbankinteraktionen durch seine ActiveCord. Nach der Validierung der Benutzereingabe können Sie die Daten mithilfe von ActiveCords save()
-Methode in Ihrer Datenbank speichern.
Angenommen, Sie haben ein Contact
, das einer Datenbanktabelle entspricht, können Sie dies tun:
<code class="php">if ($model->load(Yii::$app->request->post()) && $model->validate()) { if ($model->save()) { // Success! Send a confirmation email, etc. } else { // Handle save errors } }</code>
Dieser Code lädt zunächst die übermittelten Daten mit load()
in das Modell. Dann validiert es die Daten. Wenn die Validierung erfolgreich ist, wird versucht, die Daten in der Datenbank zu speichern. Die save()
-Methode übernimmt die Datenbankinteraktion, einschließlich der Behandlung potenzieller Datenbankfehler.
Die clientseitige Validierung verbessert die Benutzererfahrung durch sofortiges Feedback. YII integriert nahtlos in JavaScript -Frameworks wie JQuery, um dies zu erreichen. yii\widgets\ActiveForm
generiert automatisch den Client-Seite-Validierungscode basierend auf den Regeln Ihres Modells.
Sie müssen nicht viel zusätzlichen Code für die grundlegende clientseitige Validierung schreiben. ActiveForm
verarbeitet das meiste automatisch. Für komplexere Szenarien können Sie die Client-Seite-Validierungslogik mit der Methode validate()
des ActiveForm
-Widgets und der Integration in benutzerdefinierte JavaScript-Funktionen anpassen. Denken Sie jedoch immer daran, dass die clientseitige Validierung als zusätzliche Maßnahme und niemals als Ersatz für eine robuste serverseitige Validierung angesehen werden sollte.
Das obige ist der detaillierte Inhalt vonWie arbeite ich mit Formularen in yii und verarbeite die Benutzereingabevalidierung von Benutzern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!