| Autor | Zpráva | ||
|---|---|---|---|
| Dan Charousek Profil |
Hezké sobotní odpoledne.
Uplynul skoro rok (toto letí), co jsem zde na diskusi představil Vall-Iho. Za tu dobu jsem ho několikrát použil na různých projektech. Jak čas šel, tak se ukázalo, v čem Vall-I pokulhává (co bylo třeba opravit / změnit), tak i v čem tkví jeho přednosti. Dnes bych vám rád ukázal, jak Vall-I vyrostl, trochu dospěl a co vše s formuláři vlastně umí :). Věřím, že Vall-I najde uplatnění napříč celým spektrem vývojářů, kteří pracují na projektech, které nejsou stavěny na frameworcích a systémech, které mají vlastní formulářové knihovny. Jak tedy začít? login-page.php: <?php
# nejdůležitější je asi část, kde Vall-Iho načteme:
require_once "cesta/k/vall-imu/Vall-I.php";
use Pefrewo\Libraries\VallI;
# vall-i podporuje statickou inicializaci a od té doby, co tato fičura existuje nepoužívám nic jiného :)
$form = VallI::create([
# cesta k formuláři. např.:
'filePath' => 'login-form.php',
# aby měl Vall-I přehled o tom, se kterými daty by měl pracovat je nutné data, která spadají do validace pro konkrétní formulář rozlišovat do pole (viz. soubor formuláře)
'dataKey' => 'udaje',
# proměnné předávané do šablony formuláře
'params' => ['textTlacitka' => 'Odeslat'],
# třídy předávané (ne)validním inputům
'classes' => ['invalid' => 'InvalidElement', 'valid' => 'ValidElement'],
# výchozí hodnoty. Např.:
'defaults' => ['name' => 'John Doe'],
# not to restore inputy. Elementy, kterým se neobnoví hodnota při nevalidním odeslání formuláře.
'notToRestore' => ['password'],
# a konečně on submit funkce
'onSubmit' => function($form, $isValid) {
// $form->getData() vrátí odeslaná data
if($isValid) {
echo 'Formulář je validní';
} else {
// $form->getErrorMessages() vrátí všechny chybové hlášky.
echo 'Formulář není validní'
}
}
]);
# formulář se vykreslí snadno:
echo $form;login-form.php: <form method="POST" id="loginForm"> Username: <input type="text" name="udaje[username]" data-name="username" class="VallIElement"> <rules name="username"> <rule name="required" content="true" message="Please enter your username."> </rules> Password: <input type="password" name="udaje[password] data-name="password" class="VallIElement"> <rules name="password"> <rule name="required" content="true" message="Please enter your password"> <rule name="minlength" content="6" message="Please enter password longer than 6 characters."> <rules> <button type="submit><?= $textTlacitka ?></button> </form> Každý element, který podléhá validaci má třídu VallIElement Každý element musí mít data-name atribut, který specifikuje jeho jméno v rámci Vall-Iho - hledá se $_POST['dataKey']['data-name'], kde dataKey je klíč specifikovaný při inicializaci formuláře.
Pokud z nějakého důvodu potřebujete data více větvit, jméno elementu podléhá této specifikaci: <input type="text" name="data[user][name]" class="VallIElement" data-name="user-name"> <input type="password" name="data[user][password]" class="VallIElement" data-name="user-password"> Zatím nemám úplně ucelenou dokumentaci na githubu, takže seznam validačních pravidel je k nahlédnutí na konci článku, ve kterém o VallIm píšu na svém blogu. Pokud vám z nějakého důvodu pravidla, která jsou k dispozici nestačí, existuje samozřejmě možnost přidání vlastního pravidla. <?php
$form->addRule('username', [
'own' => function($value) {
return $value % 2 == 0; // konroluje, zda je číslo sudé
}
], [
'Please enter an even number.'
]);K dispozici je i inline výpis chybových hlášek, který je defaultně zapnut a dá se vypnout při inicializaci pomocí useInlineErrorMessages => false Doufám, že Vall-I někomu ulehčí život a práci při validování formulářů :). Jsem otevřený všem nápadům, kritice, poznámkám. Přeji hezký den, Dan |
||
| CZechBoY Profil |
#2 · Zasláno: 21. 8. 2016, 01:20:47
Asi by bylo lepší udělat to více objektově.
Proč bych měl použít tvoji knihovnu a ne třeba Nette/Forms? |
||
|
Časová prodleva: 9 let
|
|||
0