Autor Zpráva
Ťunťa
Profil *
Zdravím,
mám následující kod, který předpokládá využití Nette frameworku

$form->addText($name, $label)
     ->setType('email')
     ->setEmptyValue('@')
     ->addRule(\Nette\Forms\Form::EMAIL, 'Zadejte e-mail ve formátu jméno@doména.cz');

a potřeboval bych přiřadit tomuto e-mail inputu ( ->setRequired('Napište e-mail') ), ale až po teto deklaraci, něco jako:
$form[$name]->setRequired = 'Napište e-mail';

nebo zjistit jak mohu přiřazení metody podmínit (jinak než že celou deklaraci dvakrát umístím do podmínky)
Díky
Rellik
Profil
S Nette programuji, ale z tvé otázky moc nechápu o co ti jde... Jestli chceš aby email byl vyplněn pokaždé, tak to můžeš udělat:
$form->addText('email', 'E-mail:')
                ->addRule($form::FILLED, 'Email je nutné vyplnit')
                ->addRule($form::EMAIL, 'Nesprávně uvedený email!');
Norman
Profil
Jestli tě správně chápu :) tak chceš v jedné situaci, aby nebyl validován input a v druhé ano. Zároveň se ti ovšem nelíbí kód duplikovat. Rozumím tomu správně?
joe
Profil
$email = $form->addText($name, $label)
     ->setType('email')
     ->setEmptyValue('@')
     ->addRule(\Nette\Forms\Form::EMAIL, 'Zadejte e-mail ve formátu jméno@doména.cz');

if (condition) {
  $email->setRequired('Naipšte e-mail');
} 
Ťunťa
Profil *
Norman na to kápnul, díky joemu za řešení.
Ťunťa
Profil *
Které mi teda bohužel nefunguje, pole je required vždy. (zkoušel jsem přesně co posílal joe)

$email = $form->addText($name, $label)
     ->setType('email')
     ->setEmptyValue('@')
     ->addRule(\Nette\Forms\Form::EMAIL, 'Zadejte e-mail ve formátu jméno@doména.cz');
 
if (false) {
  $email->setRequired('Naipšte e-mail');
} 
- bude required
Rfilip
Profil
false se vyhodnotí jako true - viz zde php.net/manual/en/language.types.boolean.php
místo toho použij 0 nebo ""
Ťunťa
Profil *
Díky za informaci to jsem nevěděl. Ve svém projektu však používám proměnnou, která je 1 nebo 0. Používám také CSS pro obarvení required elementů
.required label { color: maroon }

Ty labely, které by měly být required, jsou obarvené správně, nicméně validace požaduje i ty neobarvené. Používám live-form-validation 2.0 ze stránek nette. Má někdo podobné zkušenosti?


Oprava: problém přetrvá i po vypnutí live-form-validation. Je to nejspíš způsobeno chybou v kódu.
Používám cyklus který mi vybírá z databáze informace o inputech, které se mají zobrazit, ty ukládá do pole (které je definované na úrovni třídy)
Pro představu:
foreach ($this->database->table('input_list')->where...
{
...
$this->inputInfo=array('ID'    => $application->id,
                                 'TYPE'  => $application->inputs->type,
                                 'LABEL' => $label,
                                 'REQ'   => $application->required,
                                 );
}
a v metodě používám výše uvedený kód, s tím, že podmínka je $this->inputInfo['REQ'] ( hodnota je 1 nebo 0 ), když si v tom cyklu dumpnu toto pole, hodnoty jsou v pořádku, inputy jsou podle css také správně obarvené, ale validátor vyžaduje vyplnění polí která nejsou označena jako povinná.
Amunak
Profil
Rfilip:
false se vyhodnotí jako true
Kde to tam vidíš? "false" se vyhodnotí jako true, false rozhodně ne.
Ťunťa
Profil *
K tématu prosím. ;-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: