Formulář v layout latte se neodešle

- lukendo
 - Člen | 96
 
Zdravím, mám formulář, který chci mít přístupný pro všechny presentery, tudíž jsem ho podle zdejšího příspěvku "":https://forum.nette.org/…yout-sablony vytvořil v BasePresneteru od kterého všechny ostatní dědí, ale i tak se stále neodešle (funkční je, např. v defaultu se odešle). Cache a všechno mám čisté a na závěř ještě jedna otázka. Když mám v Tracy že uživatel je UnLogged, tak proč jsou pořád nastavené údaje jako id, role… To je jenom že se mi nemažou sessions? Díky

- Oli
 - Člen | 1215
 
Proč se ti forumlář neodešle z tohodle popisku nejde poznat. Jak to
máš v šabloně a jak vypadá createComponent pro vytváření
toho formuláře?
K tomu druhýmu dotazu: Identita
Při odhlášení se identita nesmaže a je nadále k dispozici. Takže ačkoliv má uživatel identitu, nemusí být přihlášený. Pokud bychom chtěli identitu explicitně smazat, odhlásíme uživatele voláním $user->logout(TRUE).

- Barvoj
 - Člen | 60
 
vytvořil v BasePresneteru od kterého všechny ostatní dědí, ale i tak se stále neodešle
Zkus sem hodit nějaký kód..
proč jsou pořád nastavené údaje jako id, role…
Když odhlašuješ uživatele voláním $user->logout(), tak
se nesmaže identita.
Pokud chceš smazat identitu volej to s parametrem true. Tedy
$user->logout(true).

- lukendo
 - Člen | 96
 
BasePresenter:
<?php
namespace App\FrontModule\Presenters;
use Nette;
use App\Forms;
/**
 * Base presenter for all application presenters.
 */
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
	/** @var Forms\SignInFormFactory @inject */
	public $signInFactory;
	public function beforeRender()
	{
		//na základě isLogged se zobrazuje odkaz přihlásit, odhlásit
		$user = $this->getUser();
		if (!$user->isLoggedIn())
			$this->template->isLogged = true;
		else
			$this->template->isLogged = false;
	}
	/**
	 * Sign-in form factory.
	 * @return Nette\Application\UI\Form
	 */
	protected function createComponentSignInForm()
	{
		return $this->signInFactory->create(function () {
			$this->redirect('Homepage:default');
		});
	}
}
SignFormFactory:
<?php
namespace App\Forms;
use Nette;
use Nette\Application\UI\Form;
use Nette\Security\User;
use Tracy\Debugger;
class SignInFormFactory
{
	use Nette\SmartObject;
	/** @var FormFactory */
	private $factory;
	/** @var User */
	private $user;
	public function __construct(FormFactory $factory, User $user)
	{
		$this->factory = $factory;
		$this->user = $user;
	}
	/**
	 * @return Form
	 */
	public function create(callable $onSuccess)
	{
		$form = $this->factory->create();
		$form->addText('username')
			->setAttribute('placeholder', 'přihlašovací jméno')
			->setAttribute('class', 'ui input')
			->setRequired('Please enter your username.');
		$form->addPassword('password')
			->setAttribute('placeholder', 'heslo')
			->setAttribute('class', 'input')
			->setRequired('Please enter your password.');
		$form->addCheckbox('remember', 'Zůstat přihlášen');
		$form->addSubmit('send', 'Přihlásit se')
			->setAttribute('class', 'ui primary button');
		$form->onSuccess[] = function (Form $form, $values) use ($onSuccess) {
			try {
				$this->user->setExpiration($values->remember ? '14 days' : '20 minutes');
				$this->user->login($values->username, $values->password);
				Debugger::barDump($values);
			} catch (Nette\Security\AuthenticationException $e) {
				$form->addError('The username or password you entered is incorrect.');
				return;
			}
			$onSuccess();
		};
		return $form;
	}
}
layout.latte:
<div class="right menu">
  			{if $isLogged}
          {control signInForm}
    		{else}
    			<a class="item" href="{$basePath}/sign/out">Odhlásit se</a>
    		{/if}
    		<a class="item">Nápověda</a>
  		</div>