Použitie Helperov v Presenteri
- Jakub Šulák
- Člen | 222
Jen bych si dal pozor, jestli je nechceš používat v nějaké části aplikace, kterou teď máš v presenteru, ale měla by být až v šabloně, nebo naopak jestli je helper skutečně Helper. Ne nadarmo jde o třídu TEMPLATEhelper…
Pošli kdyžtak na ukázku, kde chceš v presenteru použít ten helper, dost mě to zajímá, zda to má využití…
- timbulko
- Člen | 85
No, napríklad som chcel pomocou helperu translate prekladať napríklad názvy stránok, kľúčové slová atď, ktoré sa generujú v Presenteri ($this->template->title = „nadpis“ apod.). Ale nakoniec som to vyriešil cez {_$title}, takže ten helper v Presenteri ani nebudem potrebovať :-) Ale dík za info.
- Jakub Šulák
- Člen | 222
Jinak ten helper translate je stejně jen odkaz na metodu Tranlator::translate()… Takže lze volat spíše takto.
- ITguy
- Člen | 3
Mám podobný dotaz, do BasePresenteru jsem si vepsal
<?php
$translator = new Translator(
Environment::getVariable('lang'), WWW_DIR . '/../locale');
$this->template->setTranslator($translator);
?>
použil jsme návod, který byl zveřejněn na tomto fóru (Gettext + Poedit
+ Nette). Překlad slov zapsaných v phtml jede ok. Nevím jak to mám ale
použít v presenteru např. AuthPresenter (vycházim z příkladu
akrabatform). Když použiju např. Translator::translate tak to hodí
chybu.
Předem Dík
Editoval ITguy (18. 4. 2009 19:08)
- vlki
- Člen | 218
Myslím, že Translator by mohl být zaregistrován jako služba. V bootstrapu něco jako:
$translator = new Translator(
Environment::getVariable('lang'), WWW_DIR . '/../locale');
Environment::addService($translator, 'Nette\ITranslator');
Pak by BasePresenter měl v beforeRender získání objektu služby. Upraveno pro tvůj případ:
$this->template->setTranslator(Environment::getService('Nette\ITranslator'));
A pokud bys chtěl něco přeložit jinde než v šabloně, tak získáš objekt od služby a přeložíš…
$translator = Environment::getService('Nette\ITranslator');
$translator->translate('text k přeložení');
Netestoval jsem, ale myslím, že by mělo fungovat.
- romansklenar
- Člen | 655
Je třeba víc koukat do API (vlki to psal nejspíš z hlavy).
Environment::getServiceLocator()->addService(...);