Problem s formulari, problémy s odesláním/redirect

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

Zdravím, snažim jsem již pár dni o vytvoření formuláře ale stále se mi nedaří. Zkoušel jsem se držet několika návodu ale vždy buď scela neúspěšně nebo se vyskytli některá problémy.
dle návodu na webu:

         protected function createComponentRegistrationForm()
    {
        $form = new Form();
        $form->addText('name', 'Jméno:');
        $form->addPassword('password', 'Heslo:');
        $form->addSubmit('login', 'Registrovat');
        $form->onSuccess[] = array($this, 'registrationFormSucceeded');
        return $form;
    }

    // volá se po úspěšném odeslání formuláře
    public function registrationFormSucceeded($form, $values)
    {

        // ...
        $this->flashMessage('Byl jste úspěšně registrován.');
        $this->redirect('Plemena:default');
    }

v tomto formuláři se mi nepodařilo rozchodit ani jeho odeslání
poté podle jiného návodu, možná staršího:

   protected function createComponentPridanipsaFormular()
    {

        $moznosti_pohlavi = array(
          'pes' => 'pes',
          'fenka' => 'fenka',
        );
        $plemena = $this->database->table('plemeno')->fetchPairs('id_plemene','nazev');

        $psi = array(''=>'neznamy otec');
        $psi += $this->database->table('pes')->where('pohlavi','pes')->fetchPairs('cislo_psa','jmeno');
        $fenky = array(''=>'neznama matka');
        $fenky += $this->database->table('pes')->where('pohlavi','fenka')->fetchPairs('cislo_psa','jmeno');

        $form = new Form();
        $form->addText('jmeno', 'Jmeno:')->setRequired();
        $form->addRadioList('pohlavi', 'Pohlavi:', $moznosti_pohlavi)->getSeparatorPrototype()->setName(NULL)->setRequired();
        $form->addSelect('plemeno', 'Plemeno:',$plemena)->setRequired();
        $form->addText('majitel', 'Majitel:');
        $form->addSelect('matka', 'Matka:',$fenky);
        $form->addSelect('otec', 'Otec:',$psi);
        $form->addText('oceneni', 'Oceneni:');
        $form->addSubmit('vlozit', 'Vlozit');

        if ($form->isSuccess())
        {
          $values = $form->getValues();
          $this->database->table('pes')->insert(array(
            'jmeno' => $values->jmeno,
            'pohlavi' => $values->pohlavi,
            'pes_plemeno' => $values->plemeno,
           // 'majitel' => $values->majitel,
           // 'rodic1' => $values->matka,
            //'rodic2' => $values->otec,
            //'ziskane_oceneni' => $values->oceneni,
            ));
          dump($values);
        }
        return $form;
    }

formulář samozřejmě není kompletní, druhý případ fungoval vcelku dobře ale měl jsem problémy s redirectem. Jsem opravdu nováček v NETTE takže za případné chyby s eomlouvám

Oli
Člen | 1215
+
0
-

První případ vypadá v pohodě. Co je Form()? Jakej ma namespace?

kejlicz
Člen | 201
+
0
-

Když v tom prvním místo

$form = new Form();

dáš

$form = new \Nette\Application\UI\Form;

tak to musí fungovat. A když Ti něco nejde, tak piš přesný popis, co nejde a jakou to hází chybu. Podle popisu „nepodařilo se mi rozchodit“ se toho moc nepozná.

Oky_Lister
Člen | 2
+
0
-

Omlouvám se za špatnou formulaci dotazu. Upozornili jste mě na chyby v uvažování. Díky :-)