Förderbar ist eine PHP -Bibliothek, um Formulare zu verarbeiten. Es analysiert ein HTML -Formular und ermöglicht es Ihnen, es aus Ihrem PHP -Code zu manipulieren und es dann zu rendern.
Über Komponist:
{
"require" : {
"gregwar/formidable" : " dev-master "
}
}Oder mit einem Klon des Repositorys:
git clone https://github.com/Gregwar/Formidable.gitOder herunterladen:
Zunächst müssen Sie Ihren Code zum Beispiel in HTML schreiben:
<!-- forms/example.html -->
< form method =" post " >
Enter your name:
< input type =" text " name =" name " /> < br />
< input type =" submit " />
</ form >Geben Sie in Ihrem PHP -Code Ihr Formular an beeindruckend an:
<?php
session_start ();
include ( ' vendor/autoload.php ' );
// Formidable will parse the form and use it to check integrity
// on the server-side
$ form = new Gregwar Formidable Form ( ' forms/example.html ' );
$ form -> handle ( function () {
echo " Form OK! " ;
}, function ( $ errors ) {
echo " Errors: <br/> " ;
foreach ( $ errors as $ error ) {
echo " $ error <br /> " ;
}
});
echo $ form ;Einfach, richtig?
Sie können dann die beeindruckende API verwenden, um mit Ihrem Formular zu spielen:
<?php
// Will set the value of the field
$ form -> name = " Bob " ;
// Will get the value of the field
$ name = $ form -> name ;
// Adds a constraint on the name
$ form -> addConstraint ( ' name ' , function ( $ value ) {
if ( strlen ( $ value ) < 10 ) {
return ' Your name should be at least 10 characters! ' ;
}
});
// Adds a constraint on the whole form
$ form -> addConstraint ( function ( $ form ) {
if ( $ form -> getValue ( ' pass1 ' ) != $ form -> getValue ( ' pass2 ' )) {
return ' The passwords are different ' ;
}
});Sie können auch versuchen, Ihr Formular zu ändern und Einschränkungen direkt im HTML -Code hinzuzufügen:
< input type =" text " name =" name " minlength =" 10 " />Dadurch wird der Text mindestens 10 Zeichen lang sein, wenn die serverseitigen Einschränkungen überprüft werden.
Möchten Sie, dass ein Captcha Ihr Formular sichert?
< input type =" captcha " name =" code " />Dies generiert ein Bild und ein Eingabefeld auf der Client-Seite und verwendet die Sitzung auf der Serverseite, um zu überprüfen, ob der Code korrekt ist.
Beachten Sie, dass dies die Abhängigkeit mit der Gregwar/Captcha -Bibliothek verwendet (Sie müssen Abhängigkeiten mit Composer installieren).
Die folgenden Eingangstypen werden unterstützt:
input mit Typen:textnumber oder numeric , siehe min und max -Attributeint oder integer , siehe min und max -Attributefilecheckboxradiohiddenpasswordcaptcha generiert automatisch ein Bilddate generiert drei ausgewählte und gibt eine DateTime als Daten zurückmultiradio und multicheckbox (siehe Quellabschnitt)textareaselect Beachten Sie, dass einige Attribute nicht html-valid sind, wie maxlength :
< input type =" text " name =" name " maxlength =" 10 " />Es wird nicht im HTML -Formular gerendert, sondern zur Überprüfung der Integrität.
Hier ist die Liste der verfügbaren Attribute:
minlength : die Mindestlänge des Wertesmaxlength : Die maximale Länge des Wertesregex : Der Regexp, den der Wert respektieren solltemin (für Zahlen): der Mindestwertmax (für Zahlen): der Maximalwertrequired : Sagen Sie, dass das Feld erforderlich istreadonly : Das Feld ist readonly und sollte kein Modifikator seinvalue : Der Standardwert für das Feldmin-entries : Geben Sie die minimale Anzahl von Einträgen an, die Sie für ein Mehrfaches bereitstellen sollten (siehe unten)max-entries : Geben Sie die maximale Anzahl von Einträgen an, die Sie für ein Vielfaches angeben können (siehe unten)entries : Geben Sie sowohl die minimale als auch die maximale Anzahl von Einträgen für ein Multiple an (siehe unten) Sie können diese Methode in Ihrem $form -Objekt aufrufen:
posted() : true zurück, wenn das Formular veröffentlicht wurdecheck() : Überprüfen Sie das Formular und geben Sie eine Reihe von Gültigkeitsfehlern zurückhandle($callback, $errorCallback) , diese Verknüpfungsmethode, die veröffentlicht wurde und $ () $callback aufgerufen wird, wenn das Formular gültig ist, $errorCallback ENDEsetAttribute($field, $attr, $value) : Legt ein zusätzliches Attribut auf einem Feld festgetAttribute($field, $attr) : Erhält ein zusätzliches Attribut auf einem Feldsource($source, $values) : Feed eine Quelle (siehe Abschnitt "Quelle")setPlaceholder($name, $value) : Legt einen Platzhalterwert fest (siehe unten)addConstraint($field, $callback) : Fügt eine benutzerdefinierte Einschränkung in einem Feld hinzu. Der callback wird mit dem Feldwert aufgerufen und sollte FALSE zurückgeben, wenn kein Problem oder eine Fehlerzeichenfolge. Wenn Sie nur eine Schließung an ihn weitergeben, wird die Schließung mit dem als Argument bestandenen Formular aufgerufen und kann dann einige Tests mit mehreren Feldern oder Forminformationen durchführen.setValue($field, $value) : Legen Sie den Wert eines Feldes festgetValue($field) : Holen Sie sich den Wert eines FeldessetValues(array $values) : Legen Sie die Werte für einige Felder festgetValues() : Erhalten Sie die Werte aller Felder Ein zusätzliches CSRF -Token wird automatisch in das Formular eingefügt und bei der Übermittlung überprüft. Somit werden alle Ihre Formen gesichert.
Das Vorhandensein und die Gültigkeit des CSRF -Tokens werden verwendet, um zu überprüfen, ob ein Formular bei der posted veröffentlicht wurde (es wird intern im handle verwendet)
Wenn Sie das name im form angeben, unterscheidet sich das CSRF -Token für dieses spezifische Formular. Dies ermöglicht dies zu, dass die Differenz, welches Formular eingereicht wird, wenn auf derselben Seite mehrere Formulare vorhanden sind.
Die Sprache für die Fehler kann mit setLanguage() festgelegt werden:
<?php
// Will set the language to french for errors
$ form -> setLanguage ( new Gregwar Formidable Language French ); Überprüfen Sie, ob Ihre Sprache im Language unterstützt wird. Zögern Sie nicht, sich zu beteiligen!
Sie können das Sourcing -System verwenden, um dynamisch einen select , ein multiradio oder eine multicheckbox zu füllen:
< input type =" multicheckbox " name =" colours " source =" colours " /> Dann bevölkern Sie es mit source :
<?php
$ form -> source ( ' colours ' , array ( ' red ' , ' yellow ' , ' blue ' ));Dies wird durch einige Kontrollkästchen wiedergegeben.
Sie können es auf diese Weise mit select machen:
< select name =" colour " >
< options source =" colours " />
< option value =" other " > Other </ option >
</ select >Und beziehen Sie es dann mit der gleichen Methode
Sie können ein Formular aus einer Datei oder aus einer Zeichenfolge erstellen. Dies wird automatisch erkannt:
<?php
$ form = new Gregwar Formidable Form ( ' <form method="post">
<select name="colour">
<option value="blue">Blue</option>
<option selected value="red">Red</option>
<option value="green">Green</option>
</select>
</form> ' );
echo $ form -> getValue ( ' colour ' ) . "n" ;
// red
// Sets the color to blue
$ form -> setValue ( ' colour ' , ' blue ' );
echo $ form ;
/* Will display:
<form method="post">
<select name="colour" >
<option selected="selected" value="blue">Blue</option>
<option value="red">Red</option>
<option value="green">Green</option>
</select>
<input type="hidden" name="posted_token" value="d293dc38017381b6086ff1a856c1e8fe43738c60" />
</form>
*/ Sie können auch mapping -Attribut verwenden, um Ihr Formular zu füllen oder die Formulardaten in einem Array oder in einem Objekt zurückzugewinnen, z. B.:
<?php
class Person
{
protected $ name ;
public function getName () { return $ this -> name ; }
public function setName ( $ name ) {
$ this -> name = $ name ;
}
}
$ person = new Person ;
$ person -> setName ( ' Jack ' );
$ form = new Gregwar Formidable Form ( ' <form method="post">
<input type="text" name="name" mapping="name" />
</form> ' );
$ form -> setData ( $ person );
echo $ form ;
/*
Will output something like:
<form method="post">
<input required="required" type="text" name="name" value="Jack" />
<input type="hidden" name="posted_token" value="aa27f437cc6127c244db14361fd614af51c79aac" />
</form>
*/Beachten Sie, dass die Zuordnung den Symfony PropertyAccessor verwendet. Sie können Accessor wie im obigen Beispiel verwenden, um Eigenschaften zu füllen.
Sie können verwenden:
getData($entity = array()) : Entität ausfüllen und zurück mit Daten besiedelt werdensetData($entity) : Füllen Sie das Formular mit den Entitätsattributen ein Sie können einer Seite mit dem <multiple> Tag mehrere Unterformulare hinzufügen:
< form method =" post " >
Film name: < input type =" text " name =" film_name " mapping =" name " />
< h2 > Actors </ h2 >
< multiple name =" actors " mapping =" actors " >
First name: < input name =" first_name " mapping =" firstName " /> < br />
Last name: < input name =" last_name " mapping =" lastName " /> < br />
</ multiple >
< input type =" submit " />
</ form > Damit kann der <multiple> genau wie ein Feld verwendet werden, enthält jedoch eine Reihe von Elementen.
Einige JS werden auf der Seite injiziert und ermöglichen es Ihnen, einige Elemente hinzuzufügen/zu entfernen.
Sie können die Einschränkung min-entries und max-entries verwenden, um die Anzahl der Einträge in einem Vielfacher zu begrenzen.
Wenn Sie den gleichen Wert für min-entries und max-entries angeben oder einen Wert für entries angeben (was tatsächlich ein Alias ist), wird die Anzahl der R-Eingänge festgelegt und kein JavaScript ist erforderlich.
In einigen Fällen möchten Sie benutzerdefinierte Daten in das Formular hinzufügen, es gibt zwei Möglichkeiten, dies zu tun.
Mit der {{ something }} -Syntax können Sie einfach Daten aus dem Code injizieren:
<?php
$ form = new Gregwar Formidable Form ( ' <form method="post">
Hello {{ name }}!
</form> ' );
$ form -> setPlaceholder ( ' name ' , ' Bob ' );
echo $ form ; Im obigen Beispiel wird der {{ name }} als Bob gerendert.
Beachten Sie, dass Platzhalter ohnehin verwendet werden können, die in den Tags <form> und Eingabe ausgenommen sind:
<?php
$ form = new Gregwar Formidable Form ( ' <form method="post">
<span style="color:{{ color }}">Hello</span>
</form> ' );
$ form -> setPlaceholder ( ' color ' , ' red ' );
echo $ form ;Sie können Ihr Formular auch mit PHP wie eine Vorlage schreiben, z. B. eine Vorlage:
<form>
<?php echo $ label ; ?> : <input type="text" name="name" />
<input type="submit" />
</form>Und dann Ihr Formular als zweites Argument über die Vorlagenvariablen eingeleitet:
<?php
$ form = new Gregwar Formidable Form ( ' the-above-form.php ' , array ( ' label ' => ' Your name ' )); Das $label wird mit PHP interpretiert.
Aus Gründen der Aufführungen möchten Sie möglicherweise die analysierten Formulare zwischenspeichern.
Gehen Sie dazu einfach als drittes Argument des Konstruktors true :
<?php
/**
* Parsed data for the form will be serialized and stored in a cache file,
* if you use this form often, this will offer you better performances.
*/
$ form = new Gregwar Formidable Form ( ' form.html ' , null , true ); Dadurch wird das Gregwar/Cache -System verwendet. Sie müssen die Komponistenabhängigkeiten dieses Repositorys abrufen oder manuell installieren. Standardmäßig werden Cache -Dateien in das cache -Verzeichnis geschrieben, aus dem das Skript ausgeführt wird.
Versuchen Sie, das Skript für performances.php im examples/ Verzeichnis auszuführen. Dadurch werden Sie ein Beispiel für den Leistungsverstärkung mit Cache erhalten.
Sie können auch eine Instanz von GregwarCacheCache als dritter Parameter übergeben, mit dem Sie das Cache -Verzeichnis festlegen können.
GregwarFormidable steht unter MIT -Lizenz, schauen Sie sich die LICENSE für weitere Informationen an.
V2.0.0 Endunterstützung für PHP <5.6
V2.1.0 Entfernen Sie die harte Abhängigkeit von der Captcha -Bibliothek