Problem s {widget…}-pravdepodobne nette nevytvara componenty

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

Caute, stiahol som nette:

Pro PHP 5.3.0 nebo vyšší:
Nette Framework 2.0-alpha2 pro PHP 5.3 se jmennými prostory

mam v tom napisany jednoduchy staticky web o 6–7strankach, mam to uz aj na serveri vsetko funguje krasne…prislo na radu jednoduche admin menu, kde do AdminPresenteru som dal kod na vytvorenie jednoducheho login formularu:

<?php

  use Nette\Forms\Form;
  use Nette\Application\AppForm;
  use Nette\ComponentModel\Component;

  class AdminPresenter extends BasePresenter
  {
    function createComponentLoginForm()
      {
          $form = new AppForm($this, 'login');
          $form->addText('name', 'Login:')
              ->addRule(Form::FILLED, 'Musíte zadať login!');
          $form->addPassword('password', 'Heslo:')
              ->addRule(Form::FILLED, 'Musíte zadať heslo');
          $form->addSubmit('login', 'Prihlás');

          $form->onSubmit[] = array($this, 'loginFormSubmitted');
          return $form;
      }

      function loginFormSubmitted($form)
      {
          $values = $form->getValues();
          Debug::dump($values);
      }
  }
?>

v sablone potom zavolam {widget LoginForm} alebo {widget loginForm} no stale dostavam hlasku: ‚Component with name 'loginForm‘ does not exist.‚
skusal som aj namiesto widget pouzit v presenteri $this->template->formular = $this['loginForm‘]; a vykreslit to v sablone no stale loginForm does not exist. vyzera to ze mi nechce vobec vytvarat komponenty.

Dakujem za pomoc.

Editoval hizo (13. 2. 2011 15:15)

Aurielle
Člen | 1281
+
0
-

Komponentu jsi totiž pojmenoval login a ne loginForm. Oprav si továrničku takto:

protected function createComponentLoginForm($name)
{
	$form = new AppForm($this, $name);
	// ...

	return $form;
}
hizo
Člen | 48
+
0
-

diky moc, vsetko uz funguje…taka blbost:D

Aurielle
Člen | 1281
+
0
-

… ještě doplním že macro {widget} je deprecated, použij místo něj raději {control}.

hizo
Člen | 48
+
0
-

a ze je deprecated znamena?som zaciatocnik tak pardon za nevhodne otazky

mkoubik
Člen | 728
+
0
-

To znamená, že je v nette pouze z historických důvodů a nemělo by se používat, protože může být v kterékoliv další verzi nette odstraněno.

hizo
Člen | 48
+
0
-

jo takto..diky prejdem teda na {control}

loov
Člen | 49
+
0
-

To je dobrý vědět, že widget je deprecated, nikde se o takových to věcech nepíše… :-)

Chbox
Člen | 125
+
0
-

snad to hlasí Laděnka myslím…

Filip Procházka
Moderator | 4668
+
0
-

ale píše

David Grudl napsal(a):

obecně je preferovaný zápis {control …} před {widget …} a {var …} před {assign …}

loov
Člen | 49
+
0
-

úplně jsem na ten článek zapoměl, omlouvám se :-)