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: 8 let
|
0