2 Stimmen

Werden Validierungen ausgeführt, wenn eine "massive Zuweisung" in Yii durchgeführt wird?

Ich habe einen Artikel gelesen "Sichere" Validierungsregeln verstehen"

sagte der Autor:

Schlüsselpunkt - Massive Zuweisungen werden nur für Felder vorgenommen, die eine explizite Überprüfungsregel bestanden haben. Die offensichtlichen "eigentlichen" Prüfer - Länge, E-Mail, erforderlich, etc. - kommen alle in Frage, aber einige Felder sind Freiformfelder und optional und haben keine Formatanforderungen - der Benutzer kann eingeben, was er will, auch wenn er es leer lässt.

Aber es gibt eine Kommentar :

Ich gebe zu, dass ich mir nicht die Zeit genommen habe, dies gründlich zu überprüfen, aber Soweit ich mich erinnere, ist es nicht richtig, dass Sie die Validierung in einen Topf werfen mit mit der Zuweisung. Wenn ich mich recht erinnere, muss man, wenn man eine massive Zuweisung ($model->setAttributes($_POST['Model'])), keine tatsächliche Validierung statt. Stattdessen wird für jedes Attribut im POST/GET Array, prüft das Modell, ob das Attribut sicher für die Zuweisung ist ist (indem geprüft wird ob es eine Validierungs- oder Sicherheitsregel für dieses Attribut gibt, ohne es tatsächlich zu validieren) - wenn ja, dann setzt es das Attribut, wenn nicht, wird es ignoriert.

Die Validierung findet nur statt, wenn Sie $model->save() aufrufen (oder explizit $model->validate()), wenn die bereits vergebenen Attribute zugewiesenen Attribute anhand der Validierungsregeln überprüft werden.

Es ist auch erwähnenswert, dass massive Zuweisungen und individuelle Zuweisung nicht wirklich gleichwertig sind - die massive Zuweisung prüft ob es für jedes Attribut eine Validierungs- oder Sicherheitsregel gibt, während wenn Sie eine individuelle Zuweisung vornehmen ($model->attribute = $_POST['Model']['attribute'];) keine solche Prüfung vorgenommen wird - Yii geht davon aus dass die Zuweisung vertrauenswürdig ist.

Kann mir jemand sagen, was das Richtige ist?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X