Pochopení konstrukce widgetu (controlu)
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- onny
- Člen | 67
Dobrý den,
potřeboval bych poradit, v kterém kroku udělám chybu, celkově můj
problém je to, že konečný widget nevracím pomocí return, ale přes echo,
což je za a) určitě špatně, za b) to způsobuje různé porblémy
s přesmerováním například formulářů.
Budu rád za každou radu, která mě navede lepším směrem – ono to takto funguje, ale není to asi úplně košér.
basepresenter
public function createComponent($name)
{
if($name == "login") { return new WidgetLogin; }
if($name == "email") { return new WidgetEmail; }
}
a teď například loginForm – je to klasický samotný php soubor, ve kterém je jenom
class WidgetLogin extends Control
{
public function createComponentLoginForm() {
$form = new AppForm;
$form->addText('username', 'Uživatelské jméno:')
->addRule(Form::FILLED, 'Zapomněli jste vyplnit uživatelské jméno.');
$form->addPassword('password', 'Heslo:')
->addRule(Form::FILLED, 'Zapomněli jste vyplnit heslo.');
$form->addSubmit('login', 'Přihlásit');
$form->onSubmit[] = callback($this, 'login');
return $form;
}
public function render()
{
$user = Environment::getUser();
if ($user->isInRole('admin')) { print "je to ADMIN"; }
echo $this['loginForm'];
}
pokud tady v render metodě nemám echo, ale třeba return, nic se do šabony nedostane. V šabloně samozřejmě widget login nebo control login.
Děkuji Vám