InvalidArgumentException pri validaci selectboxu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
vosy
Člen | 525
+
0
-

ahoj mam formularik:

public function pridatForm($opt=array())
    {
        $parent = $opt['parent'];

        $form = new MyForm;

        $form->addGroup();

        $form->addSelect('svetadil', 'Svetadil:')
                ->setPrompt(' -- ')
                ->setRequired('Zvolte prosím světadíl.');

svetadily pridavam v tovarnicce:

/* FACTORIES */
    protected function createComponentPridatForm()
    {
      $fData = array('parent'=>$this);
      $form = $this->DestinaceFormFactory->pridatForm($fData);

      $r = $this->SvetadilyRepository->seznam();
      $form['svetadil']->setItems($r->fetchpairs('id', 'nazev_'.\App\Glb::$JAZYK));

      return $form;
    }

a kdyz nezvolim zadny svetadil tak bych chtel videt hlasku

->setRequired('Zvolte prosím světadíl.');

ale kdyz dam validovani formulare

$form->setDefaults($post['form']);
        $form->validate();

tak se mi zobrazi

Nette\InvalidArgumentException
Value '' is out of allowed range ['Amerika', 'Afrika', 'Evropa', 'Asie', 'Australie'] in field 'svetadil'.

ano value je '' timpadem si myslim ze by se mela vyvolat podminka a zobrazit se ‚Zvolte prosím světadíl.‘

David Matějka
Moderator | 6445
+
0
-

verze nette?
co je $post?
proc volas validaci rucne?

pokud ma byt hodnota nevybrana, tak to musi byt NULL, ne prazdny retezec

Editoval matej21 (12. 4. 2014 12:54)

vosy
Člen | 525
+
0
-

nette „nette/nette“: „~2.1.0“

$post jsou hodnoty POST predane javascriptem

/* HANDLES */
   function handlePridatDestinaciValidate()
   {
     $presenter = $this->getPresenter();
     $post = $presenter->request->post;
matopeto
Člen | 395
+
0
-

Mam rovnaky problem po prechode na Nette 2.1.2 (z 2.0)

mam:

<?php

$container->addSelect('page', 'Page', $pages)
	->setOption('id', $toggleNamePreffix . "-toggle-page")
	->setPrompt('Select page')
	->addConditionOn($container['type'], Form::EQUAL, 'page')
	->addRule(Form::FILLED, 'Select page.');
?>

Po tom ako to odoslem nevyplnene:

Value '' is out of allowed range ['Page1', 'Page2'] in field 'page'.

Podla mna je to chyba a berie promt ako hodnotu, a pritom by ho mal ignorovat.

Dokonca to nejde ani pri jednoduchom:

<?php

$container->addSelect('page', 'Page', $pages)
	->setOption('id', $toggleNamePreffix . "-toggle-page")
	->setPrompt('Select page');
?>

Editoval matopeto (17. 4. 2014 13:26)

matopeto
Člen | 395
+
0
-

U mna je to nakoniec touto chybou: https://github.com/…or/issues/19

vosy
Člen | 525
+
0
-

nejak z toho presne nevim co bych mel udelat, dix

matopeto
Člen | 395
+
0
-

Aktualizovat replicator :)