


PHP Master | Festlegen benutzerdefinierter Fehlermeldungen für Zend_Form_Element
Key Takeaways
- Beim Erstellen einer nicht englischen Website oder Anwendung, die auf Zend Framework basiert, haben Entwickler häufig mit der Markierung eines Feldes einer Zend_Form zu kämpfen, die als ungültig und benutzerdefinierte Fehlermeldungen angezeigt werden. Dies ist hauptsächlich auf die nativen konter-intuitiven Methoden der Zend_Form_Element-Klasse zurückzuführen.
- Das Standardverhalten des Zend -Frameworks, das dem American Company Zend gehört, besteht darin, Fehlermeldungen in Englisch für jeden Validator anzuzeigen, der durch die Benutzereingabe unterbrochen wird. Entwickler können entweder jede Fehlermeldung des Frameworks übersetzen oder in einer oder mehreren Nachrichten erklären, dass die Eingabe ungültig ist, und Vorschläge zum Einfügen eines akzeptierten Werts anzeigen. Die letztere Option ist weniger kompliziert, insbesondere für kleine und mittelgroße Projekte.
- Die Lösung für dieses Problem liegt in der Erstellung des Feldes innerhalb der Form (init () -Methode () und der Verwendung der SetRormessages () -Methode in Verbindung mit einer Eigenschaft der Validatoren von Zend Framework, BreakchainonFailure (). Mit dieser Eigenschaft kann der Validierungsprozess unter der ersten fehlgeschlagenen Bedingung stoppen. Dieser Ansatz ermöglicht es dem Formular, nur die benutzerdefinierte Nachricht anzuzeigen, wenn ungültige Eingaben vorliegen.
ein Beispiel
entwickeln Nehmen wir an, Sie haben ein Formular mit verschiedenen Feldern und berücksichtigen nur eines von ihnen, zum Beispiel ein Texteingangsfeld, mit dem ein Benutzer seinen Namen eingeben kann. Die Validatoren, die Sie verwenden können, sind unterschiedlich, aber zum Beispiel begrenzen wir die Länge des Namens und erlauben nur alphabetische Zeichen und Räume. Wenn wir die Zend Framework -Sprache sprechen, verwenden wir die Klassen Zend_validate_StringLength bzw. Zend_validate_alpha. Wie Sie vielleicht bereits wissen, gehört Zend Framework der amerikanischen Firma Zend und so sind alle Nachrichten, die es zeigt, in englischer Sprache. Das Standardverhalten des Frameworks besteht darin, eine oder mehrere Fehlermeldungen für jeden Validator anzuzeigen, der von der Benutzereingabe unterbrochen wird. Für diejenigen, die eine nicht englische Website erstellen, gibt es also zwei Optionen, um Nachrichten von allen Benutzern lesbar zu haben: Übersetzen Sie jede Fehlermeldung des Frameworks oder erläutern Sie in einer oder mehreren Nachrichten, dass die Eingabe ungültig ist, und zeigen Sie Vorschläge zum Einfügen an ein akzeptierter Wert. Die erste Option ist übereinstimmend, insbesondere für kleine und mittelgroße Projekte. Daher zeige ich, wie die zweite Option verwendet wird. Um es einfach zu halten, setzen wir eine einzelne benutzerdefinierte Nachricht fest: „Die Eingabe ist ungültig. Der Wert muss nur alphabetische Zeichen und Räume haben und seine Länge muss zwischen 3 und 50 Zeichen liegen. “Der Code
Ich werde den Code zeigen, den wir während des Artikels verwenden werden. Erstens ist dies das Formular, das das Eingabefeld für den Namen und die Validatoren enthält, um die Daten zu überprüfen.<span><span><?php </span></span><span><span>class Application_Form_User extends Zend_Form </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>// create the field </span></span><span> <span>$element = new Zend_Form_Element_Text("name"); </span></span><span> <span>$element->setLabel("Name"); </span></span><span> </span><span> <span>// set the validators </span></span><span> <span>$element->setValidators(array( </span></span><span> <span>new Zend_Validate_Alpha(true), </span></span><span> <span>new Zend_Validate_StringLength( </span></span><span> <span>array("min" => 3, "max" => 50)) </span></span><span> <span>)); </span></span><span> <span>$element->setRequired(); </span></span><span> </span><span> <span>// add the element to the form </span></span><span> <span>$this->addElement($element); </span></span><span> </span><span> <span>// add a submit button </span></span><span> <span>$element = new Zend_Form_Element_Submit("submit"); </span></span><span> <span>$element->setLabel("Submit"); </span></span><span> <span>$this->addElement($element); </span></span><span> <span>} </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>class IndexController extends Zend_Controller_Action </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>} </span></span><span> </span><span> <span>public function indexAction() { </span></span><span> <span>$form = new Application_Form_User(); </span></span><span> </span><span> <span>if ($this->getRequest()->isPost() && </span></span><span> <span>$form->isValid($this->getRequest()->getPost())) { </span></span><span> <span>$this->view->message = "Valid input"; </span></span><span> <span>} </span></span><span> <span>else { </span></span><span> <span>$this->view->form = $form; </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>if (isset($this->message)) { </span></span><span> <span>echo $this->message; </span></span><span><span>} </span></span><span><span>if (isset($this->form)) { </span></span><span> <span>echo $this->form; </span></span><span><span>}</span></span>
Analyse der Methoden des Frameworks
Eine gute Frage ist, ob bereits Methoden zur Verfügung stehen, um sich dieser Art von Situation zu stellen. Die Antwort lautet fast . Ich meine, es gibt Methoden, aber sie funktionieren nicht immer, wie Sie es erwarten (zumindest wie ich erwartet). Die Methoden zur Verwaltung der Fehlermeldungen sind:- setErrors (array $ message)
- setRormessages (Array $ message)
<span><span><?php </span></span><span><span>class Application_Form_User extends Zend_Form </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>// create the field </span></span><span> <span>$element = new Zend_Form_Element_Text("name"); </span></span><span> <span>$element->setLabel("Name"); </span></span><span> </span><span> <span>// set the validators </span></span><span> <span>$element->setValidators(array( </span></span><span> <span>new Zend_Validate_Alpha(true), </span></span><span> <span>new Zend_Validate_StringLength( </span></span><span> <span>array("min" => 3, "max" => 50)) </span></span><span> <span>)); </span></span><span> <span>$element->setRequired(); </span></span><span> </span><span> <span>// add the element to the form </span></span><span> <span>$this->addElement($element); </span></span><span> </span><span> <span>// add a submit button </span></span><span> <span>$element = new Zend_Form_Element_Submit("submit"); </span></span><span> <span>$element->setLabel("Submit"); </span></span><span> <span>$this->addElement($element); </span></span><span> <span>} </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>class IndexController extends Zend_Controller_Action </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>} </span></span><span> </span><span> <span>public function indexAction() { </span></span><span> <span>$form = new Application_Form_User(); </span></span><span> </span><span> <span>if ($this->getRequest()->isPost() && </span></span><span> <span>$form->isValid($this->getRequest()->getPost())) { </span></span><span> <span>$this->view->message = "Valid input"; </span></span><span> <span>} </span></span><span> <span>else { </span></span><span> <span>$this->view->form = $form; </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>if (isset($this->message)) { </span></span><span> <span>echo $this->message; </span></span><span><span>} </span></span><span><span>if (isset($this->form)) { </span></span><span> <span>echo $this->form; </span></span><span><span>}</span></span>
<span><span><?php </span></span><span><span>// set the custom message in the case of an error </span></span><span><span>$element->setErrors(array("The input is invalid. The value must have only alphabetic characters and spaces and its length must be between 3 and 50 characters."));</span></span>
entdecken Sie die Lösung
Jetzt geht es darum, zu verstehen, wenn und wie So fügen Sie die benutzerdefinierte Meldung ein, damit der Benutzer einen Vergleich und einen Vorschlag darüber haben kann, welche Werte akzeptiert werden. Auf jeden Fall liegt das When in der Erstellung des Feldes innerhalb der Form (init () -Methode () und wie ist die Vereinigung der SetRormessages () -Methode und der Verwendung einer Eigenschaft der Validatoren von Zend Framework namens BreakchainonFailure () () zurückzuführen. . Letzteres ermöglicht es uns, den Validierungsprozess bei der ersten fehlgeschlagenen Bedingung zu stoppen. Wenn wir fünf Validatoren einrichten, aber der erste fehlschlägt, werden die anderen vier nicht verwendet. Um diese Eigenschaft zu verwenden, die die kleinstmögliche Anzahl von Codezeilen verwendet, ändere ich ein wenig den Code, den ich zu Beginn veranschaulicht habe. Ich füge der Init () -Methode die Codezeile hinzu, die die Methode setErrormessages () verwendet, und nutze eine der möglichen Eingabestellungen, die von SetValidators () akzeptiert werden, die ein Array von Arrays erwartet. Das im Haupt enthaltene Array kann maximal drei Parameter haben, nämlich:- Eine Zeichenfolge (obligatorisch), um den Validator dem Benutzer anzugeben.
- ein Boolescher (optional, standardmäßig ist sein Wert falsch), um anzugeben, ob das Framework die Validierung beim ersten Fehler brechen muss oder nicht. So legt dieser Parameter den Wert der Eigenschaft BreakchainonFailure fest, was uns dabei hilft, unser Ziel zu erreichen.
- Ein Array von Optionen (optional, standardmäßig ein leeres Array) für jeden ausgewählten Validator unterschiedlich
<span><span><?php </span></span><span><span>class Application_Form_User extends Zend_Form </span></span><span><span>{ </span></span><span> <span>public function init() { </span></span><span> <span>// create the field </span></span><span> <span>$element = new Zend_Form_Element_Text("name"); </span></span><span> <span>$element->setLabel("Name"); </span></span><span> </span><span> <span>// set the validators </span></span><span> <span>$element->setValidators(array( </span></span><span> <span>new Zend_Validate_Alpha(true), </span></span><span> <span>new Zend_Validate_StringLength( </span></span><span> <span>array("min" => 3, "max" => 50)) </span></span><span> <span>)); </span></span><span> <span>$element->setRequired(); </span></span><span> </span><span> <span>// add the element to the form </span></span><span> <span>$this->addElement($element); </span></span><span> </span><span> <span>// add a submit button </span></span><span> <span>$element = new Zend_Form_Element_Submit("submit"); </span></span><span> <span>$element->setLabel("Submit"); </span></span><span> <span>$this->addElement($element); </span></span><span> <span>} </span></span><span><span>}</span></span>
Schlussfolgerung
Mit dem obigen Code zeigt das Formular nur die benutzerdefinierte Nachricht an, wenn ungültige Eingaben vorhanden sind. Genau das, was wir wollten! Falls Sie mehr Nachrichten verwenden müssen, beispielsweise Vorschläge in mehreren Phasen, fügen Sie dem Array, das für die SetRormessages () -Methode () () -Methode verwendet wird, einfach weitere Zeichenfolgen hinzu. Bild über Fotolienhäufig gestellte Fragen (FAQs) beim Einstellen benutzerdefinierter Fehlermeldungen für das Zend -Formularelement
Wie kann ich die Fehlermeldung für ein bestimmtes Formularelement in Zend anpassen? Sie können die Methode setMessage () verwenden, um eine benutzerdefinierte Fehlermeldung für einen bestimmten Validator festzulegen. Wenn Sie beispielsweise ein Formularelement mit dem Namen "E -Mail" haben und eine benutzerdefinierte Fehlermeldung dafür festlegen möchten, können Sie dies wie folgt tun:
$ mail = new Zend_form_element_text ('E -Mail');
$ E -Mail-> setLabel ('E -Mail -Adresse')
-> Addvalidator ('Notizty', True)
-> Addvalidator ('EmailAddress');
$ E-Mail-> GetValidator ('Notizty')-> setMessage ('Bitte geben Sie Ihre E-Mail-Adresse ein)
In diesem Beispiel wird die SetMessage () -Methode verwendet Legen Sie eine benutzerdefinierte Fehlermeldung für den Validator "NotEMPY" des Formulars "E -Mail" -Formungselement ein. Zend?
Wenn Sie mehrere benutzerdefinierte Fehlermeldungen für ein Formularelement in Zend festlegen möchten, können Sie die Methode setMessages () verwenden. Diese Methode akzeptiert eine Reihe von Fehlermeldungen. Hier ist ein Beispiel:
$ mail = new Zend_form_element_text ('E -Mail');
$ E -Mail-> setLabel ('E -Mail -Adresse') -> Addvalidator ('Notimpty', True)
-> Addvalidator ('E-MailAddress');
$ E-Mail-> GetValidator ('NotEMpty')-> setMessages (array (
Zend_valate_notempty :: is_empty => 'Bitte geben Sie Ihre E-Mail-Adresse an. : Invalid => 'Bitte geben Sie eine gültige E -Mail ein Adresse '
));
Wie kann ich eine benutzerdefinierte Fehlermeldung anzeigen, wenn ein Formular die Validierung in Zend fehlschlägt? Diese Methode fügt eine Fehlermeldung hinzu, die angezeigt wird, wenn das Formular die Validierung fehlschlägt. Hier ist ein Beispiel:
$ form = new Zend_Form ();
$ form-> addElement ('text', 'E-Mail', Array (
'Validators' => Array (
Array ('Validator' => 'Notizty', 'Optionen' => Array ('Nachrichten' => 'E -Mail ist erforderlich')),
Array ('Validator' => 'E-MailAddress', 'Optionen' => Array ('Nachrichten' => 'Ungültige E-Mail-Adresse'))
)
));
if (!
$ form-> adderror ('Es gab Fehler in Ihrer Einreichung. Bitte korrigieren Sie sie und versuchen Sie es erneut.') Wird verwendet, um eine benutzerdefinierte Fehlermeldung hinzuzufügen, die angezeigt wird, wenn das Formular die Validierung fehlschlägt.
Wie kann ich die Standardfehlermeldungen in Zend ändern? Mit der Methode setMessage (). Mit dieser Methode können Sie eine benutzerdefinierte Fehlermeldung für einen bestimmten Validator festlegen. Hier ist ein Beispiel:
$ mail = new Zend_form_element_text ('E -Mail');
-> Addvalidator ('Notimpty', True)
-> Addvalidator ('E-MailAddress'); setMessage ('Bitte geben Sie eine gültige E -Mail -Adresse ein) In diesem Beispiel wird die Methode setMessage () verwendet, um die Standardfehlermeldungen für die zu ändern "Notizty" und "E -MailAddress" Validatoren des Formulars "E -Mail". In Zend sind Sie eine benutzerdefinierte Fehlermeldung dafür festzulegen, indem Sie die Methoden SetRequired () und AdderRormessage () verwenden. Hier ist ein Beispiel:
$ mail = new Zend_form_element_text ('E -Mail'); ('E -Mail ist erforderlich'); Adderrormessage () Methode wird verwendet, um eine benutzerdefinierte Fehlermeldung dafür festzulegen.
Das obige ist der detaillierte Inhalt vonPHP Master | Festlegen benutzerdefinierter Fehlermeldungen für Zend_Form_Element. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.
