German (Deutsch) translation by Władysław Łucyszyn (you can also view the original English article)



Wenn Sie fragen: "Was ist Yii?" Sehen Sie sich mein
früheres Tutorial an: Einführung in das Yii Framework, das die
Vorteile von Yii beschreibt und eine Übersicht über die Neuerungen in Yii 2.0 enthält, die im Oktober 2014 veröffentlicht wurden.
In dieser Programmierserie mit Yii2 leite ich die Leser beim Einsatz des neu aktualisierten Yii2-Frameworks für PHP. Dieses Tutorial ist unser zweiter Teil und betrachtet die Validatoren von Yii2. Validierer vereinfachen den Code, der zur Validierung der Eingabe erforderlich ist, d. H. Die Konformität oder Nichtübereinstimmung der Dateneingabe, typischerweise von Benutzern über Webformulare. Insbesondere werden wir einige der integrierten Spezialvalidierungen untersuchen, die bei der Webentwicklung üblich sind.
Hier eine Liste der integrierten Yii-Validatoren und Links zu der Dokumentation, die wir untersuchen werden:
- CaptchaValidator: Überprüft ein CAPTCHA-Formularüberprüfungsfeld.
- CompareValidator: Vergleicht zwei Werte aus der Form oder einer Konstante, z. x muss kleiner als 99 sein.
- EmailValidator: Stellt sicher, dass ein Wert eine gültige E-Mail-Adresse ist.
- ExistValidator: Stellt sicher, dass ein Wert in einer anderen Tabelle vorhanden ist.
- FileValidator: Stellt sicher, dass eine hochgeladene Datei vorhanden ist.
- ImageValidator: Überprüft die Bild- und Bildeigenschaften.
- RangeValidator: Stellt sicher, dass sich ein Wert innerhalb einer Liste von Werten befindet.
- RegularExpressionValidator: Führt die Validierung anhand einer durch einen regulären Ausdruck definierten Bedingung durch.
- UniqueValidator: Stellt sicher, dass der Wert innerhalb einer Tabelle
eindeutig ist, beispielsweise eine E-Mail-Adresse.
- UrlValidator: Stellt sicher, dass der Wert im URL-Format vorliegt, z. http://ihredomain.com.
Ich werde Sie durch Beispiele für jede dieser Validierungen führen, wobei die Hello-Anwendungscodebase aus früheren Tutorials und ein paar aus unserer Building Your Startup Series verwendet wird, die ebenfalls Yii2 verwendet. Verwenden Sie die GitHub-Links auf dieser Seite, um den Code zu erhalten.
Nur zur Erinnerung, ich beteilige mich an den Kommentarthreads unten. Ich bin besonders interessiert, wenn Sie weitere Ideen haben oder Themen für zukünftige Tutorials vorschlagen möchten. Sie können mich auch @ Twitter auf Twitter erreichen oder mich bei Lookahead Consulting per E-Mail kontaktieren.
Was ist ein Validator?
Wenn Sie ein Webentwickler sind, wissen Sie wahrscheinlich, dass Benutzereingaben nicht vertrauenswürdig sind. Zum Beispiel können Benutzer SQL-Injektionstechniken verwenden, um Abfragen auszuführen, die Kennwörter ändern oder freigeben. Jemand hat einmal die SQL-Injection gegen meine Open Source PHPList-Installation eingesetzt und es geschafft, eines meiner Passwörter zu ermitteln (PHPList hat diese in Klartext gespeichert). Normalerweise möchten Sie nur sicherstellen, dass die von Benutzern bereitgestellten Daten den Typen, Formularen und Bereichen Ihrer Anwendung entsprechen.
Das Erstellen von Validatoren in PHP von Hand erfordert Zeit. Das Yii Framework bietet eine Vielzahl von Grundüberprüfungsfunktionen, so dass sie nicht von Grund auf neu erstellt werden müssen. Wenn Sie jedoch einige benutzerdefinierte Erweiterungen benötigen, ist das ebenfalls unkompliziert.
Validierungen sind ein weiterer Grund, warum es meiner Meinung nach immer sinnvoll ist, Anwendungen auf einem Webframework wie Yii zu erstellen, anstatt auf Vanilla PHP.
In früheren Episoden haben wir auch viel über Yiis Code-Generator Gii gesprochen. Einer der Vorteile von Gii ist, dass basierend auf den SQL-Typdefinitionen im Schema die entsprechenden Validierungsregeln für Ihre Modelle geschrieben werden.
Dies ist eine große Zeitersparnis. Vielleicht möchten Sie zu unserer letzten Episode zurückkehren, um mehr über die grundlegenden Typvalidierungen von Yii2 zu erfahren.
Beginnen wir nun mit dem nächsten Satz der eingebauten Validatoren von Yii2.
Die nächsten Validatoren
Der Captcha-Validator
Beginnen wir mit CaptchaValidator, der prüft, ob eine korrekte Antwort auf ein CAPTCHA-Überprüfungsfeld vorliegt. CAPTCHAs helfen sicherzustellen, dass ein Mensch das Formular ausfüllt, und hoffentlich verhindern, dass automatisierte Skripte es senden.
Hier ist ein Beispiel für das Yii Captcha in Aktion:



Yii2 Validators CAPTCHA Validator In unserer Hello-Codebasis habe ich unser Beispielformular vereinfacht, um nur die Felder "Gedanken" und "Captcha" einzubeziehen.
1 |
class Sample extends \yii\db\ActiveRecord |
2 |
{
|
3 |
public $captcha; |
4 |
|
5 |
/**
|
6 |
* @inheritdoc
|
7 |
*/
|
8 |
public function rules() |
9 |
{
|
10 |
return [ |
11 |
[['thought'], 'string', 'max' => 255], |
12 |
[['thought'], 'trim'], |
13 |
[['thought'], 'required'], |
14 |
[['captcha'], 'captcha'], |
15 |
];
|
16 |
}
|
Hier sehen Sie die Regeldefinitionen des Modellcodes: Das Captcha ist nicht Teil unseres Datenbankschemas, es wird nur zur Überprüfung des Formulars verwendet. Daher habe ich dem Modell ein Attribut dafür hinzugefügt, z. öffentliches $ captcha ;
.
Hier ist der Ansichtscode für das Formular. Wir müssen die Captcha-Bibliothek oben einfügen.
1 |
<?php
|
2 |
|
3 |
use yii\helpers\Html; |
4 |
use yii\widgets\ActiveForm; |
5 |
use yii\captcha\Captcha; |
6 |
|
7 |
/* @var $this yii\web\View */
|
8 |
/* @var $model app\models\Sample */
|
9 |
/* @var $form yii\widgets\ActiveForm */
|
10 |
?>
|
11 |
|
12 |
<div class="sample-form"> |
13 |
|
14 |
<?php $form = ActiveForm::begin(); ?> |
15 |
<?= $form->errorSummary($model); ?> |
16 |
|
17 |
<?= $form->field($model, 'thought')->textInput(['maxlength' => 255]) ?> |
18 |
|
19 |
<?= $form->field($model, 'captcha')->widget(\yii\captcha\Captcha::classname(), [ |
20 |
// configure additional widget properties here
|
21 |
]) ?> |
22 |
|
23 |
<div class="form-group"> |
24 |
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> |
25 |
</div>
|
26 |
|
27 |
<?php ActiveForm::end(); ?> |
28 |
|
29 |
</div>
|
So sieht die Captcha-Validierung in Aktion aus:



Wenn Sie auf das Captcha klicken, generiert Yii ein neues Bild.
Der Compare-Validator
Nun geht es weiter zum CompareValidator. Dieser Prüfer vergleicht zwei Werte aus dem Formular oder einen einzelnen Formularwert mit einer Konstante, z. B. muss x kleiner als 99 sein.
In diesem Beispiel möchte ich sicherstellen, dass die Benutzereingabe für den Rang größer als null ist, jedoch kleiner oder gleich 100 ist.
Zuerst füge ich das Eingabefeld wieder für unser Rangattribut hinzu:
1 |
<?php $form = ActiveForm::begin(); ?> |
2 |
<?= $form->errorSummary($model); ?> |
3 |
|
4 |
<?= $form->field($model, 'thought')->textInput(['maxlength' => 255]) ?> |
5 |
|
6 |
<?= $form->field($model, 'rank')->textInput() ?> |
7 |
|
8 |
<?= $form->field($model, 'captcha')->widget(\yii\captcha\Captcha::classname(), [ |
9 |
// configure additional widget properties here
|
10 |
]) ?> |
Dann füge ich unserem Modell zwei Vergleichsregeln hinzu:
1 |
public function rules() |
2 |
{
|
3 |
return [ |
4 |
[['thought'], 'string', 'max' => 255], |
5 |
[['thought'], 'trim'], |
6 |
[['thought'], 'required'], |
7 |
[['captcha'], 'captcha'], |
8 |
[['rank'], 'integer'], |
9 |
['rank', 'compare', 'compareValue' => 0, 'operator' => '>'], |
10 |
['rank', 'compare', 'compareValue' => 100, 'operator' => '<='], |
11 |
];
|
12 |
}
|
Eine vollständige Liste der verfügbaren Vergleichsoperatoren finden Sie hier.
So sieht unser Formular aus, wenn der Benutzer ein ungültiges Attribut übermittelt:



Wenn Sie die spezifischen Integritätsregeln in einer Fehlermeldung angeben möchten, können Sie mit Yii Validators den für den Benutzer angezeigten Fehler wie folgt anpassen:



Yii2-Validatoren Die Validatorin mit benutzerdefinierten Fehlernachricht vergleichen Dies zu implementieren ist mit dem Message-Attribut recht einfach:
1 |
public function rules() |
2 |
{
|
3 |
return [ |
4 |
[['thought'], 'string', 'max' => 255], |
5 |
[['thought'], 'trim'], |
6 |
[['thought'], 'required'], |
7 |
[['captcha'], 'captcha'], |
8 |
[['rank'], 'integer'], |
9 |
['rank', 'compare', 'compareValue' => 0, 'operator' => '>','message'=>Yii::t('app','Rank must be between 0 and 100 inclusive.')], |
10 |
['rank', 'compare', 'compareValue' => 100, 'operator' => '<=','message'=>Yii::t('app','Rank must be between 0 and 100 inclusive.')], |
11 |
];
|
12 |
}
|
Aktualisieren unseres Schemas, um weitere Validierungen zu testen
Für einige dieser nächsten Validierungstests bitte ich Sie, der Datenbank einige Felder hinzuzufügen.
In \migrations\m150219_235923_create_sample_table.php
fügen wir einige neue Felder hinzu, um die nächsten Validatoren zu testen: E-Mail, URL, Dateiname usw.
1 |
$this->createTable('{{%sample}}', [ |
2 |
'id' => Schema::TYPE_PK, |
3 |
'thought' => Schema::TYPE_STRING.' NOT NULL DEFAULT ""', |
4 |
'goodness' => Schema::TYPE_SMALLINT . ' NOT NULL DEFAULT 0', |
5 |
'rank' => Schema::TYPE_INTEGER . ' NOT NULL', |
6 |
'censorship' => Schema::TYPE_STRING . ' NOT NULL', |
7 |
'occurred' => Schema::TYPE_DATE . ' NOT NULL', |
8 |
'email' => Schema::TYPE_STRING . ' NOT NULL DEFAULT ""', |
9 |
'url' => Schema::TYPE_STRING . ' NOT NULL DEFAULT ""', |
10 |
'filename' => Schema::TYPE_STRING.' NOT NULL', |
11 |
'avatar' => Schema::TYPE_STRING.' NOT NULL', |
12 |
], $tableOptions); |
Führen Sie dann die Migration aus, um die Tabelle zu löschen, und führen Sie dann eine Aufwärtsbewegung durch:
1 |
Admins-MBP:hello Jeff$ ./yii migrate/down 1
|
2 |
Yii Migration Tool (based on Yii v2.0.2) |
3 |
|
4 |
Total 1 migration to be reverted: |
5 |
m150219_235923_create_sample_table |
6 |
|
7 |
Revert the above migration? (yes|no) [no]:yes |
8 |
*** reverting m150219_235923_create_sample_table
|
9 |
> drop table {{%sample}} ... done (time: 0.002s) |
10 |
*** reverted m150219_235923_create_sample_table (time: 0.005s) |
11 |
|
12 |
Migrated down successfully. |
13 |
Admins-MBP:hello Jeff$ ./yii migrate/up 1
|
14 |
Yii Migration Tool (based on Yii v2.0.2) |
15 |
|
16 |
Total 1 new migration to be applied: |
17 |
m150219_235923_create_sample_table |
18 |
|
19 |
Apply the above migration? (yes|no) [no]:yes |
20 |
*** applying m150219_235923_create_sample_table
|
21 |
> create table {{%sample}} ... done (time: 0.007s) |
22 |
*** applied m150219_235923_create_sample_table (time: 0.010s) |
23 |
|
24 |
Migrated up successfully. |
Wir können jetzt die E-Mail- und URL-Validatoren testen.
E-Mail- und URL-Validatoren
Der EmailValidator stellt sicher, dass ein Wert eine gültige E-Mail-Adresse ist, und der UrlValidator stellt sicher, dass ein Wert im URL-Format vorliegt, z. http://ihredomain.com.
Es ist ziemlich einfach, Regeln für unsere neuen E-Mail- und URL-Felder zu erstellen:
1 |
public function rules() |
2 |
{
|
3 |
return [ |
4 |
[['thought'], 'string', 'max' => 255], |
5 |
[['email'], 'email'], |
6 |
[['url'], 'url'], |
Hier ist der Ansichtscode für das Formular. Beachten Sie, wie ich benutzerdefinierte Etiketten zur Verbesserung der Formularverwendbarkeit verwende:
1 |
<div class="sample-form"> |
2 |
|
3 |
<?php $form = ActiveForm::begin(); ?> |
4 |
<?= $form->errorSummary($model); ?> |
5 |
|
6 |
<?= $form->field($model, 'thought')->textInput(['maxlength' => 255]) ?> |
7 |
|
8 |
<?= $form->field($model, 'email')->textInput()->label(Yii::t('app','Your email address')) ?> |
9 |
|
10 |
<?= $form->field($model, 'url')->textInput()->label(Yii::t('app','Your website')) ?> |
Hier sind die Validatoren in Aktion:



Dies ist offensichtlich sehr nützlich für Webanwendungen.
Der Exist Validator
Der ExistValidator ist in bestimmten Szenarien sehr nützlich. Es kann sicherstellen, dass ein Wert in einer anderen Tabelle vorhanden ist. Und es kann auf verschiedene Arten verwendet werden - hier einige Beispiele in der Dokumentation:
1 |
// a1 needs to exist
|
2 |
['a1', 'exist'] |
3 |
// a1 needs to exist, but its value will use a2 to check for the existence
|
4 |
['a1', 'exist', 'targetAttribute' => 'a2'] |
5 |
// a1 and a2 need to exist together, and they both will receive error message
|
6 |
[['a1', 'a2'], 'exist', 'targetAttribute' => ['a1', 'a2']] |
7 |
// a1 and a2 need to exist together, only a1 will receive error message
|
8 |
['a1', 'exist', 'targetAttribute' => ['a1', 'a2']] |
9 |
// a1 needs to exist by checking the existence of both a2 and a3 (using a1 value)
|
10 |
['a1', 'exist', 'targetAttribute' => ['a2', 'a1' => 'a3']] |
In der Yii-Dokumentation wird hervorgehoben, dass mit Exist "überprüft werden kann, ob ein Fremdschlüssel einen Wert enthält, der in der Fremdtabelle gefunden werden kann".
In unserem Beispiel werde ich eine Regel erstellen, die überprüft, ob die E-Mail-Adresse im Formular bereits in unserer registrierten Benutzertabelle vorhanden ist. Dazu verwenden wir die targetClass, die Yii mitteilt, in welcher Klasse (oder Modelltabelle) die E-Mail-Adresse des Benutzers zur Überprüfung nachgeschlagen wird.
Hier ist die Regeldefinition. Beachten Sie die Einbeziehung unseres Benutzermodells oben:
1 |
<?php
|
2 |
|
3 |
namespace app\models; |
4 |
|
5 |
use Yii; |
6 |
use yii\models\User; |
7 |
|
8 |
/**
|
9 |
* This is the model class for table "sample".
|
10 |
*
|
11 |
* @property integer $id
|
12 |
* @property string $thought
|
13 |
* @property integer $goodness
|
14 |
* @property integer $rank
|
15 |
* @property string $censorship
|
16 |
* @property string $occurred
|
17 |
*/
|
18 |
class Sample extends \yii\db\ActiveRecord |
19 |
{
|
20 |
public $captcha; |
21 |
|
22 |
/**
|
23 |
* @inheritdoc
|
24 |
*/
|
25 |
public function rules() |
26 |
{
|
27 |
return [ |
28 |
[['thought'], 'string', 'max' => 255], |
29 |
[['email'], 'email'], |
30 |
[['email'], 'exist','targetClass'=>'\app\models\User','message'=>Yii::t('app','Sorry, that person hasn\'t registered yet')], |
31 |
[['url'], 'url'], |
Dies weist Yii an, die User-Tabelle abzufragen, um sicherzustellen, dass die angegebene E-Mail-Adresse mit einem zuvor registrierten Benutzer übereinstimmt.
So sieht es in Aktion aus:



Yii2-Validatoren sind mit E-Mail-Suche vorhanden Sie können hier mehr über die Exist-Validierung und ihre Permutationen erfahren.
Die Datei- und Bildprüfer
Als Nächstes zeige ich Ihnen Beispiele für FileValidator, der die Existenz, den MIME-Typ und die Größe einer hochgeladenen Datei sicherstellt, sowie den ImageValidator, der das Bild und seine Eigenschaften überprüft.
Um die Datei- und Image-Validatoren zu erkunden, lassen Sie uns ein Beispiel aus der Reihe "Erstellen Sie Ihr Startup mit PHP" betrachten: Benutzereinstellungen, Profilbilder und Kontaktdetails. In dieser Episode im UserSettings-Modell können Benutzer eine Datei für ihr Profilbild hochladen.
Das Bildattribut akzeptiert die hochgeladene Datei:
1 |
public function rules() |
2 |
{
|
3 |
return [ |
4 |
[['user_id', ], 'required'], |
5 |
[['user_id', ], 'unique'], |
6 |
[['image'], 'safe'], |
7 |
[['image'], 'file', 'extensions'=>'jpg, gif, png'], |
8 |
[['image'], 'file', 'maxSize'=>'100000'], |
9 |
['image', 'image', 'extensions' => 'png, jpg, gif', |
10 |
'minWidth' => 100, 'maxWidth' => 400, |
11 |
'minHeight' => 100, 'maxHeight' => 400, |
12 |
],
|
Die FileValidatoren stellen sicher, dass das Image in einer richtigen Image-Erweiterung endet und weniger als 100.000 Byte umfasst.
Der ImageValidator überprüft außerdem den Erweiterungstyp sowie die Breiten- und Höhenbereiche für das Bild.
Hier ein Beispiel für Fehler, die durch das Hochladen eines Bildes erzeugt werden, dessen Abmessungen größer als 400 x 400 Pixel sind:



Yii2-Validatoren Image- und Dateivalidierung Das ist mein Assistent oben, der meine Tutorials gerne kopiert hat.
Der Bereich im Validator
Es gibt auch den RangeValidator, der sicherstellt, dass sich ein Wert innerhalb einer Liste zulässiger Einträge befindet.
In unserem Beispiel fügen wir das Feld für die Zensur wieder in das Formular ein:
1 |
<div class="sample-form"> |
2 |
|
3 |
<?php $form = ActiveForm::begin(); ?> |
4 |
<?= $form->errorSummary($model); ?> |
5 |
|
6 |
<?= $form->field($model, 'thought')->textInput(['maxlength' => 255]) ?> |
7 |
|
8 |
<?= $form->field($model, 'email')->textInput()->label(Yii::t('app','Your email address')) ?> |
9 |
|
10 |
<?= $form->field($model, 'url')->textInput()->label(Yii::t('app','Your website')) ?> |
11 |
|
12 |
<?= $form->field($model, 'censorship')->textInput() ?> |
13 |
|
14 |
<?= $form->field($model, 'rank')->textInput() ?> |
15 |
|
16 |
<?= $form->field($model, 'captcha')->widget(\yii\captcha\Captcha::classname(), [ |
17 |
// configure additional widget properties here
|
18 |
]) ?> |
Dann fügen wir einen RangeValidator hinzu, um die Antwort mit einer Ja- oder Nein-Zeichenfolge abzugleichen:
1 |
public function rules() |
2 |
{
|
3 |
return [ |
4 |
[['thought'], 'string', 'max' => 255], |
5 |
['thought', 'match', 'pattern' => '/^[a-z][A-Za-z,;\"\\s]+[!?.]$/i','message'=>Yii::t('app','Your thoughts should form a complete sentence of alphabetic characters.')], |
6 |
[['email'], 'email'], |
7 |
[['email'], 'exist','targetClass'=>'\app\models\User','message'=>Yii::t('app','Sorry, that person hasn\'t registered yet')], |
8 |
[['url'], 'url'], |
9 |
['censorship', 'in', 'range' => ['yes','no','Yes','No'],'message'=>Yii::t('app','The censors demand a yes or no answer.')], |
Hier ist ein Beispiel für den RangeValidator in Aktion:



Yii2-Gültigkeitsbereich im Gültigkeitsbereich
Als Nächstes betrachten wir den RegulrExpressionValidator, der die Validierung anhand einer durch einen regulären Ausdruck definierten Bedingung durchführt.
In unserem Beispiel verwende ich die folgende Regex, um vollständige Sätze mit alphabetischen Buchstaben abzugleichen. Das bedeutet, dass sie mit (!,? Oder.)
1 |
public function rules() |
2 |
{
|
3 |
return [ |
4 |
[['thought'], 'string', 'max' => 255], |
5 |
['thought', 'match', 'pattern' => '/^[a-z][A-Za-z,;\"\\s]+[!?.]$/i','message'=>Yii::t('app','Your thoughts should form a complete sentence of alphabetic characters.')], |
Enden und keine numerischen Zeichen haben müssen. Hier ein Beispiel für eine Benutzereingabe, die den Test aufgrund der Anzahl und des fehlenden Interpunktionszeichens nicht bestanden hat:



Hier ist ein gültiger Satz:



Möglicherweise interessieren Sie sich auch für Acht reguläre Ausdrücke, die Sie kennen sollten (Tuts+), als Referenz für allgemeine Regex-Muster.
Der einzigartige Prüfer
Zum Schluss betrachten wir den UniqueValidator, der sicherstellt, dass ein Wert innerhalb einer Tabelle eindeutig ist, beispielsweise eine E-Mail-Adresse oder ein Slug.
Ich habe SluggableBehavior zuvor in dieser Serie durchgesehen und bietet eine eigene, einzigartige Unterstützung für Einzigartigkeit. Schauen wir uns aber noch ein paar weitere Beispiele aus der Reihe Building Your Startup With PHP an.
In der Codebase für Meeting Planner (aus den neueren Tutorial-Episoden) im Place-Modell (\frontend\models\Place.php
) verwenden wir den eindeutigen Prüfer auf verschiedene Arten:
1 |
public function rules() |
2 |
{
|
3 |
return [ |
4 |
[['name','slug'], 'required'], |
5 |
[['place_type', 'status', 'created_by', 'created_at', 'updated_at'], 'integer'], |
6 |
[['name', 'google_place_id', 'slug', 'website', 'full_address', 'vicinity'], 'string', 'max' => 255], |
7 |
[['website'], 'url'], |
8 |
[['slug'], 'unique'], |
9 |
[['searchbox'], 'unique','targetAttribute' => 'google_place_id'], |
10 |
[['name', 'full_address'], 'unique', 'targetAttribute' => ['name', 'full_address']], |
11 |
];
|
12 |
}
|
Erstens verwenden wir die eindeutige Regel mit dem Slug, um SluggableBehavior zu verbessern, was überflüssig ist. Sie können jedoch das Validierungsformat sehen.
Zweitens prüfen wir, ob die Ergebnisse des Google Places-Suchfelds für automatische Vervollständigung des Suchvorgangs dazu führen, dass das ausgeblendete Feld für google_place_id
eindeutig ist, da es noch nicht in der Places-Tabelle vorhanden ist. Wir verhindern im Wesentlichen doppelte Google Place-IDs.
Das Besondere daran ist, dass wir mit dem einzigartigen Validator von Yii2 die Eindeutigkeit des sichtbaren Feldes (Suchfeld
) erzwingen können, während er in der sekundären Spalte, die über AJAX von Google (google_place_id
) zurückgegeben wird, validiert wird.
Drittens stellen wir sicher, dass name
und full_address
zusammen eindeutig sind. Mit anderen Worten, doppelte Ortsnamen sind in Ordnung. Es kann eine Bazillion Starbucks geben. Wir möchten jedoch nicht, dass jemand dieselbe Starbucks-Position zweimal betritt.
Hinweis: Starbucks-Kaffee ist kein wirksames Stimulans für Softwareentwickler. Ich ermutige Sie, sich in unabhängigen Kaffeehäusern aufzuhalten.
Hier ist ein Beispiel dafür in Aktion:



Was kommt als nächstes?
Ich hoffe, Sie stimmen zu, wie einfach und nützlich Yii2-Validatoren für die Webentwicklung sind. Ich kann mir einfach nicht vorstellen, ohne Hilfe eines Frameworks zur Vanilla PHP-Entwicklung zurückzukehren.
Achten Sie auf kommende Tutorials in meiner Programmierreihe "Programmieren mit Yii2", während ich mich weiter mit verschiedenen Aspekten des Frameworks beschäftige. In der nächsten Episode werde ich die erweiterten Validierungsfunktionen von Yii2 wie die folgenden überprüfen:
- Bedingte Validierung zum Durchführen einer Validierungsregel nur, wenn ein bestimmtes Ereignis wahr ist
- Benutzerdefinierte Validatoren zum Erstellen grundlegender Validierungen, die über das hinausgehen, was Yii standardmäßig bietet
- Client-seitige Validierung, um die integrierte ActiveForm-JavaScript-Validierung von Yii zu verwenden, ohne dass eine Seitenaktualisierung erforderlich ist
- AJAX-Validierung zum Implementieren serverseitiger AJAX-Validierungen zur Erweiterung der clientseitigen JavaScript-Validierungsfunktionen von Yii.
- Validierungsereignisse zum Überschreiben der Validierung oder Ausführen bestimmter Funktionen vor und / oder nach der Validierung
- Definieren von Szenarien zum selektiven Anwenden von Regeln für bestimmte Situationen
- Ad-hoc-Validierung, um Validierungsregeln unabhängig von der Formularübermittlung zu verwenden
Ich freue mich über Feature- und Themenanfragen. Sie können sie in den Kommentaren unten posten, mich auf Twitter über @reifman erreichen oder mich bei Lookahead Consulting per E-Mail benachrichtigen.
Wenn Sie wissen möchten, wann das nächste Yii2-Tutorial ankommt, können Sie auch meine Tuts+ Instructor-Seite besuchen. Es enthält immer Links zu meinen Artikeln unmittelbar nach deren Veröffentlichung.
ähnliche Links
- Yii2 Anleitung zur Überprüfung der Benutzereingabe
- Yii2 Leitfaden für Validatoren
- Yii2-Validatoren (Dokumentation)
- Yii2 Developer Exchange, meine eigene Yii2-Ressourcenseite