BasePresenter proměnná do více @layout
- mimacala
- Člen | 113
Ahojte,
mám webovu aplikaci, pro hlavní stránku mám jiný layout než pro vnitří
aplikaci uživatele.
Pokud bych chtěl do vnitří aplikace přidat jméno uživatele → tedy do
@Applayout, předám si ji přes basepresenter, ovše v layoutu mi to
vždycky i tak hodí chybu, že nezná proměnnou , kterou definuji.
Moc děkuji za rady
<div class="d-none d-sm-block topbar-divider"></div>
<li class="nav-item dropdown no-arrow">
<div class="nav-item dropdown no-arrow"><a class="dropdown-toggle nav-link"
aria-expanded="false" data-bs-toggle="dropdown"
href="#"><span
class="d-none d-lg-inline me-2 text-gray-600 small">{$jmeno} ZDE JE PROMĚNNÁ</span><img
class="border rounded-circle img-profile"
src="{$basePath}/assets/img/avatars/avatar1.jpeg"></a>
<div class="dropdown-menu shadow dropdown-menu-end animated--grow-in"><a
class="dropdown-item" href="#"><i
class="fas fa-user fa-sm fa-fw me-2 text-gray-400"></i> Profile</a><a
class="dropdown-item" href="#"><i
class="fas fa-cogs fa-sm fa-fw me-2 text-gray-400"></i> Settings</a><a
class="dropdown-item" href="#"><i
class="fas fa-list fa-sm fa-fw me-2 text-gray-400"></i> Activity
log</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#"><i
class="fas fa-sign-out-alt fa-sm fa-fw me-2 text-gray-400"></i> Logout</a>
</div>
</div>
</li>
Tady je basepresenter
<?php
namespace App\Presenters;
use Nette;
use Nette\Security\User;
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
public function __construct()
{
parent::__construct();
$this->setLayout('AppLayout');
}
public function beforeRender(): void
{
parent::beforeRender();
$this->template->jmeno = $this->user->getIdentity()->jmeno;
}
}
final class UpravitPresenter extends BasePresenter // tady dědím basepresenter
{
}
- Kamil Valenta
- Člen | 822
- Není zřejmé, jakou šablonu jsi sem dal, to je @applayout? A ta HP má @layout? A ta vypadá jak?
- $user je normálně v šabloně dostupný, takže celý beforeRender můžeš zrušit a v šabloně mít jen:
{if $user->isLoggedIn()}
{$user->getIdentity()->jmeno}
{/if}