Zavolání jeného presenteru ze šablony
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- webdata
- Člen | 153
Mám následující presenter který využívá modul AuthModule
/**
* Přihlášení uživatele
*/
class Auth_AuthPresenter extends Auth_BasePresenter {
public $defaultModule = ':Desktop:Desktop:default';
/**
* Vytvoření komponenty formuláře přihlášení
*
* @return NAppForm Rukojeť přihlašovacího formuláře
*/
protected function createComponentLoginForm() {
$form = new NAppForm;
$form->addText('username', 'Jméno : ');
$form->addPassword('password', 'Heslo : ');
$form->addSubmit('login', 'Přihlásit');
$form->addProtection('Byl jste odhlášen.');
$form->onSubmit[] = callback($this, 'loginFormSubmitted');
return $form;
}
/**
* Obsluha odeslaného formuláře
*
* @param NAppForm $form Rukojeť přihlašovacího formuláře
*/
public function loginFormSubmitted($form) {
try {
$user = $this->getUser();
$user->login($form['username']->getValue(), $form['password']->getValue());
$this->redirect($this->defaultModule);
} catch (NAuthenticationException $e) {
$form->addError($e->getMessage());
}
}
/**
* Odhlášení přihlášeného uživatele
*/
public function actionLogout() {
$this->user->logout();
$this->flashMessage('Byl jste odhlášen.');
$this->redirect('Auth:login');
}
}
Některé moduly maji společný lauyout, některé mají svuj layout. A teď řeším to že chci z libovolné nebo solečné šablony třeba přes odkaz zavolat AuthModul presenter AuthPresenter.php a v něm metodu actionLogout. Tím by pak došlo k odhlášení uživatele a redirect na login stránku.