Jak nejlépe dostat do šablony seznam jazyků
- Mirek
- Člen | 86
Podle dokumentace jsem udělal presenteru perzistentní parametr, kterým se předává jazyk. To mi funguje dobře, když si zatím url zadávám ručně. Nevím jak nejlépe dostat do šablony seznam všech jazyků, aby se tam v navigaci objevily a dalo se mezi nimi přepínat – seznam budu načítat z databáze.
- Michal Hlávka
- Člen | 190
Presenter
$this->template->languages = $this->languageRepository->fetchAll();
Latte
{foreach $languages as $lang}
<li>{$lang->slug}</li>
{/foreach}
for example
- Oli
- Člen | 1215
Jen dodám, že v tom presenteru to volej v beforeRender
v BasePresenter|FrontendPresenter
protected function beforeRender() {
$this->template->languages = $this->languageRepository->fetchAll();
parent::beforeRender();
}
A languageRepository si můžeš předat přes @inject anotaci nebo injectMethod().
- Michal Hlávka
- Člen | 190
Oli napsal(a):
Jen dodám, že v tom presenteru to volej v
beforeRender
v BasePresenter|FrontendPresenterprotected function beforeRender() { $this->template->languages = $this->languageRepository->fetchAll(); parent::beforeRender(); }
A languageRepository si můžeš předat přes @inject anotaci nebo injectMethod().
Jak si muzes byt tak jist, ze ten vypis jazyku bude mit napric aplikaci?
- Mirek
- Člen | 86
Díky, s latte problém nemám, snažím se udělat tu třídu
languageRepository a mám problém s připojením k databázi.
Laděnka mi hází chybu:
Unknown configuration option database.default.default.
v config.neom mám toto (už jsem toho spoustu zaremoval)
database:
default:
dsn: "mysql:host=mysql;dbname=web-new"
user: "user"
password: "pass"
# options: [PDO::MYSQL_ATTR_COMPRESS = true]
# debugger: true # panel v debugger baru
# explain: true # explain dotazů v debugger bar
# conventions: discovered # nebo static nebo vaší jméno třídy, výchozí je discovered
# autowired: true
konfiguraci jsem opsal z https://doc.nette.org/cs/database#…
- Michal Hlávka
- Člen | 190
Oli napsal(a):
@emptywall ty mas prepinani jazyku jen na homepage? ;-)
Ja osobne ne, ale par webu jsem takhle uz videl, jinak bych ten komentar nepsal :)
- Mirek
- Člen | 86
Pomocí @inject mi to fungovalo, ale když jsem se začetl do
možností předávání závislostí, tak se snažím to předělat na
předání v konstruktoru a nějak mi to nejde.
Mám chybu Service ‚application.1‘: Class
App\Presenters\StatRepository needed by
App\Presenters\BasePresenter::__construct() not found. Check type hint and
‚use‘ statements.
Zde je můj basePresenter :
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
private $StatRepository;
public function __construct(StatRepository $StatRepository1)
{
$this->StatRepository = $StatRepository1;
}
protected function beforeRender()
{
$this->template->staty = $this->StatRepository->najdiVsechny();
parent::beforeRender();
}
}
taky nevím, jestli v tom konstruktoru není potřeba volat ji rodičovský konstruktor
- A v modelu mám vytvořenou třídu StatRepository která má metodu najdiVsechny a config.neon mám
- App\Model\StatRepository
- nightfish
- Člen | 519
Mám chybu Service ‚application.1‘: Class App\Presenters\StatRepository needed by App\Presenters\BasePresenter::__construct() not found. Check type hint and ‚use‘ statements.
BasePresenter máš v namespace App\Presenter. Když v něm napíšeš StatRepository, tak to znamená App\Presenter\StatRepository. A ty místo toho potřebuješ App\Model\StatRepository, takže musíš změnit signaturu konstruktoru na
public function __construct(\App\Model\StatRepository $StatRepository1)
a nebo použít
use App\Model\StatRepository;
taky nevím, jestli v tom konstruktoru není potřeba volat ji rodičovský konstruktor
Ano.
Jinak to co psal @CZechBoY o předávání závislostí do předko-presenterů samozřejmě platí.
Editoval nightfish (19. 9. 2016 21:16)
- Mirek
- Člen | 86
Teď jsem narazil na další problém
V šabloně mám proměnnou $stat_vybrany=array($stat=‚cz‘,
$stat_nazev=‚česko‘)
a snažím se udělat odkaz na presenter Obsah:default s definovaným státem
v perzistentním parametru stat
<a n:href="Obsah:default stat => {$stat_vybrany->stat}">{$stat_vybrany->stat_nazev}</a>
a laděnka mi na tomto odkazu hází chybu syntax error, unexpected ‚{‘ jak to přepsat, aby se vytvořil odkaz <a n:href="Obsah:default stat ⇒ cz> kde to cz se vezme z proměnné $stat_vybrany->stat.
Editoval Mirek (20. 9. 2016 10:07)