Cannot load presenter ‚Sign‘, class ‚App\Presenters\SignPresenter‘ was not found
- DodiseK
- Člen | 56
Zdravím, včera jsem se snažil zprovoznit opět systém přihlašování, potýkal jsem se s problémem, který se týkal vlastního Autentikátoru. Tak trošku jsem se hrabal v SignPresenteru a poté i přes to, že jsem vše vrátil jak bylo, mi přestal fungovat a Tracy mi hází chybu: Invalid link: Cannot load presenter ‚Sign‘, class ‚App\Presenters\SignPresenter‘ was not found
SignPresenter.php vypadá takto
<?php
declare(strict_types=1);
namespace App\Presenters;
use Nette;
use Nette\Application\UI;
class SignPresenter extends Nette\Application\UI\Presenter
{
/** @persistent */
public $backlink = '';
/**
* Sign-in form factory.
*/
protected function createComponentSignInForm(): UI\Form
{
$form = new UI\Form;
$form->addText('username', 'Jméno:')
->setRequired('Prosím, zadejte vaše uživatelské jméno.');
$form->addPassword('password', 'Heslo:')
->setRequired('Prosím, zadejte vaše heslo.');
$form->addSubmit('send', 'Přihlásit se');
$form->onSuccess[] = [$this, 'signInFormSucceeded'];
return $form;
}
public function signInFormSucceeded(UI\Form $form, \stdClass $values): void
{
try {
$this->getUser()->login($values->username, $values->password);
} catch (Nette\Security\AuthenticationException $e) {
$form->addError($e->getMessage());
return;
}
$this->restoreRequest($this->backlink);
$this->flashMessage('Byl jsi přihlášen.');
$this->redirect('Homepage:in');
}
public function actionOut(): void
{
$this->getUser()->logout();
$this->flashMessage('Byl jsi odhlášen.');
$this->redirect('Homepage:out');
}
}
Tracy dále poukazuje na chybu v kódu souboru @layout.latte:
Řádek 109…
99: </li>
100: </ul>
101: <?php
102: }
103: else {
104: ?>
105: ¨ <ul style="margin-right: 20%; font-size: 150%;" class="navbar-nav">
106: <li class="nav-item dropdown">
107: <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false"><strong>Přihlásit se</strong></a>
108: <div class="dropdown-menu" x-placement="bottom-start" style="position: absolute; will-change: transform; top: 0px; left: 0px; transform: translate3d(0px, 30px, 0px);">
109: <a class="dropdown-item" href="<?php echo LR\Filters::escapeHtmlAttr($this->global->uiControl->link("Sign:in")) ?>">Přihlásit se</a>
110: </div>
111: </li>
112: </ul>
113: <?php
Kde celý kód vypadá takto:
{if $user->loggedIn}
<ul style="margin-right: 20%; font-size: 150%;" class="navbar-nav" style="float: right;">
<li class="nav-item">
<a class="nav-link" href="{$basePath}/homepage/dobit-kredit">
<i class="fa fa-money"></i>
Tokeny
<span class="badge"><i class="fas fa-times"></i></span>
</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false"><strong>{$user->getIdentity()->username}</strong></a>
<div class="dropdown-menu" x-placement="bottom-start" style="position: absolute; will-change: transform; top: 0px; left: 0px; transform: translate3d(0px, 30px, 0px);">
<a class="dropdown-item" href="{$basePath}/homepage/profil">Profil</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" n:href="Sign:out">Odhlásit se</a>
</div>
</li>
</ul>
{else}
¨ <ul style="margin-right: 20%; font-size: 150%;" class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false"><strong>Přihlásit se</strong></a>
<div class="dropdown-menu" x-placement="bottom-start" style="position: absolute; will-change: transform; top: 0px; left: 0px; transform: translate3d(0px, 30px, 0px);">
<a class="dropdown-item" n:href="Sign:in">Přihlásit se</a>
</div>
</li>
</ul>
{/if}
Tento kód jsem neměnil a takto vypadal i v době, kdy to ještě fungovalo, nevíte co s tím?
- ic
- Člen | 430
Pro inspiraci při tvorbě scriptu s přihlašováním bych se podíval do Examples na CD Collection ( https://github.com/…D-collection ) to je velmi minimalistický příklad s přihlašováním.
A když něco nefungovalo a pak to samo fungovat začalo, tak to je většinou znamená smazání cache :D