Chybové hlášky vedle provků se přestaly zobrazovat
- stepos
- Člen | 36
Ahoj, omlouvám se, možná je to triviální, ale trápím se několik
hodin.
Mám obyč formulář, vykresluji ho automaticky šablonou v latte.
{block content}
{control personalForm}
{/block}
Problém je, že se mi přestaly ukazovat chybové hlášky vedle políček, ale zobrazuje se jen alert javascriptu.
Co se mohlo stát?
Formulář vytvářím pomocí továrny v metodě create ve třídě
personalFormFactory.php
public function create($withOtherPayer=0)
{
$form=new Form;
$form->addGroup(self::L_LEGEND);
$form->addText('firstName', self::L_FIRST_NAME)
->setRequired(self::L_REQURIED. strtolower(self::L_FIRST_NAME));
$form->addText('familyName', self::L_FAMILY_NAME)
->setRequired(self::L_REQURIED. strtolower(self::L_FAMILY_NAME));
$form->addText('street', self::L_STREET)
->setRequired(self::L_REQURIED. strtolower(self::L_STREET))
->addRule(Form::PATTERN, self::E_STREET,'\D+');
$form->addText('numberAtStreet', self::L_NUMBER_AT_STREET)
->setRequired(self::L_REQURIED. strtolower(self::L_NUMBER_AT_STREET))
->addRule(Form::INTEGER, self::L_NUMBER_AT_STREET.self::E_NUMERIC);
$form->addText('numberInCity', self::L_NUMBER_IN_CITY)
->addCondition(Form::FILLED)
->addRule(Form::INTEGER, self::L_NUMBER_IN_CITY.self::E_NUMERIC);
$form->addText('city', self::L_CITY)
->setRequired(self::L_REQURIED. strtolower(self::L_CITY));
$form->addText('zip', self::L_ZIP)
->setRequired(self::L_REQURIED. strtolower(self::L_ZIP))
->addRule(Form::PATTERN, 'PSČ musí mít 5 číslic', '([0-9]\s*){5}');
if($withOtherPayer)
{
$form->addGroup(self::L_LEGEND_P);
$form->addText('firstNamePayer', self::L_FIRST_NAME)
->setRequired(self::L_REQURIED. strtolower(self::L_FIRST_NAME));
$form->addText('familyNamePayer', self::L_FAMILY_NAME)
->setRequired(self::L_REQURIED. strtolower(self::L_FAMILY_NAME));
$form->addText('streetPayer', self::L_STREET)
->setRequired(self::L_REQURIED. strtolower(self::L_STREET))
->addRule(Form::PATTERN, self::E_STREET,'\D+');
$form->addText('numberAtStreetPayer', self::L_NUMBER_AT_STREET)
->setRequired(self::L_REQURIED. strtolower(self::L_NUMBER_AT_STREET))
->addRule(Form::INTEGER, self::L_NUMBER_AT_STREET.self::E_NUMERIC);
$form->addText('numberInCityPayer', self::L_NUMBER_IN_CITY)
->addCondition(Form::FILLED)
->addRule(Form::INTEGER, self::L_NUMBER_IN_CITY.self::E_NUMERIC);
$form->addText('cityPayer', self::L_CITY)
->setRequired(self::L_REQURIED. strtolower(self::L_CITY));
$form->addText('zipPayer', self::L_ZIP)
->setRequired(self::L_REQURIED. strtolower(self::L_ZIP))
->addRule(Form::PATTERN, 'PSČ musí mít 5 číslic', '([0-9]\s*){5}');
}
$form->addSubmit('send', self::L_SEND);
// $form->onSuccess[] = array($this, 'PersonalFormSucceeded');
return $form;
}
A v presenteru:
public function renderDefault($country,$type,$typeOfPay)
{
$this->country = $country;
$this->type = $type;
$this->typeOfPay=$typeOfPay;
}
protected function createComponentPersonalForm()
{
if($this->typeOfPay=='other') $withOtherPayer=1; else $withOtherPayer=0;
$form = (new \App\Forms\PersonalFormFactory())->create($withOtherPayer);
$form->onSuccess[] = array($this, 'personalFormSucceeded');
return $form;
}
public function personalFormSucceeded($form,$values)
{
$this->flashMessage('Pokračujeme dál v objednávce...');
$this->forward("PayForm:default");
}
Editoval stepos (4. 5. 2016 12:57)
- Šaman
- Člen | 2668
Nejspíš se stalo to, že jsi přilinkoval soubor
netteForms.js
? Většina chyb je pak zachycena javascriptem dřiv,
než se vůbec odešle formulář. Teprve pokud tohle projde (třeba vyplý JS),
tak se pak znovu validuje na straně serveru a to vypíše chybu
u políčka.
Pokud se jedná o povinná pole, tak ty zachycují už prohlížeče samy
o sobě, takže tam ani vypnutá JS validace nepomůže a vyskočí něco
(alert, bublina, záleží na prohlížeči).
- stepos
- Člen | 36
Díky.
No, to jsem taky hledal, ale kdyby byl špatný netteForms.js, tak firebug
hlásí chybu, normálně s ním pracuje.
Nevěděl jsem, že červené hlášky vedle políčka vykresluje php, myslel
jsem, že to dělá taky js.
A co s tím mohu dělat? Když zkusím ten js nenačítat, skutečně mi
firefox začne cpát svoje bubliny s texty typu „vyplň pole v požadovaném
formátu“ – hlášky, které jsem vůbec nezadával.