renderDefault() do layout.latte
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Checkpoint
- Člen | 34
Zdravím,
potřeboval bych vypsat položky z databáze pro všechny šablony, resp. do
layout.latte. Můžete mi někdo poradit jak na to?
Děkuji
- David Matějka
- Moderator | 6445
- vytvor si nejaky BasePresenter, od ktereho budou dedit ostatni presentery
- v BasePresenteru vytvor metodu beforeRender, kde naplnis sablonu potrebnymi daty
- v @layout.latte tyto data vypises
- Checkpoint
- Člen | 34
matej21 napsal(a):
- vytvor si nejaky BasePresenter, od ktereho budou dedit ostatni presentery
- v BasePresenteru vytvor metodu beforeRender, kde naplnis sablonu potrebnymi daty
- v @layout.latte tyto data vypises
Následoval jsem Vaše body, bohužel mně vyskočila laděnka s Fatal Error „Call to a member function vsechnyKategorie() on a non-object“.
Zde je BasePresenter.php –
<?php
/**
* Base presenter for all application presenters.
*/
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
/** @var InzerceRepository */
private $inzerceRepository;
/** @var KategorieRepository */
private $kategorieRepository;
public function inject(InzerceRepository $inzerceRepository, KategorieRepository $kategorieRepository) {
$this->inzerceRepository = $inzerceRepository;
$this->kategorieRepository = $kategorieRepository;
}
public function beforeRender() {
parent::beforeRender();
$this->template->kategorie = $this->kategorieRepository->vsechnyKategorie();
}
}
?>
A zde je KategorieRepository.php
<?php
class KategorieRepository extends Repository {
public function vsechnyKategorie() {
return $this->connection->table('Category')->order('title ASC');
}
public function detailKategorie($idCategory) {
return $this->connection->table('ads')->where('Category_CategoryId LIKE ?', $idCategory);
}
}
?>
- Checkpoint
- Člen | 34
Vyřešeno. :)
Chyba byla v tom, že jsem měl nastavené proměnné na private místo na public.
Lock.
Editoval Checkpoint (6. 11. 2013 7:53)