Ověření existence uživatelského jména

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

Zdravím.
Opět zápasím s Nette :)
Mám formulář ve kterém se snažím kontrolovat existenci uživatelského jména:

protected function userForm() {
    $form = new Form();

      $form->addText('nick', 'Nick')
              ->addRule(callback($this, 'isNickAvailable'), 'Zadané uživatelské jméno již existuje');
    $form->addText('email', 'Email');
    $form->addPassword('password', 'Heslo');
    ...
    return $form;
}


  public function isNickAvailable( $form )
  {
    echo $form["nick"]->getValue();

    $result = $this->context->createUsers()->where(array(
       'nick' => $form["nick"]->getValue()))->limit(1)->fetch();

    if ($result !== FALSE && !$result->nick)
    {
        return true;
    }
    else
    {
        return false;
    }
  }

Ovšem nedokážu v metodě získat data z odeslaného formuláře (stačil je jen ten nick). Nyní mi to píše chybu:

Cannot use object of type Nette\Forms\Controls\TextInput as array
na řádku:
echo $form[„nick“]->getValue();

Nevěděl by prosím někdo jak získat hodnotu, a zda postupuji správným směrem při ověřování uživatelského jména, nebo na to existuje něco použitelnějšího?

Děkuji

jtousek
Člen | 951
+
0
-

Podle všeho má proměnná $form typ Nette\Forms\Controls\TextInput, tzn. není to formulář ale přímo ten element. Takže takhle:

public function isNickAvailable( $nick)
{
  echo $nick->getValue();

  $result = $this->context->createUsers()->where(array(
     'nick' => $nick->getValue()))->limit(1)->fetch();

  if ($result !== FALSE && !$result->nick)
  {
      return true;
  }
  else
  {
      return false;
  }
}
motorcb
Člen | 552
+
0
-

jtousek:
Díky za radu. Vyřešeno.
Máš u mne pivo :)

jtousek
Člen | 951
+
0
-

Není zač. ;-)

Ok, prosím černé svijany. :-P