Vytažení dat z db a následné předání do šablony i presenterů
- sd
- Člen | 87
Zdravím,
řeším takový problém. Potřebuji (v BasePresenteru) vytáhnout data z MySQL a následně předat proměnnou s nimi do šablony a zároveň do presenterů, dědící BasePresenter.
protected function beforeRender()
{
$this->template->allowedShopsIds = $this->databaseManager->readFrom('permissions', 'userId = ' . $this->user->getId(), NULL);
}
Kód výše funguje bez problémů, ale potřebuji tyto data předat i do presenterů. Zkoušel jsem to v BasePresenteru v metodě __construct():
public function __construct() {
$shopIds = $this->databaseManager->readFrom('permissions', 'userId = ' . $this->user->getId(), NULL);
}
Ježe pak když do beforeRender() hodím:
$this->template->allowedShopsIds = $this->shopIds;
Vyhodí chybu: Call to a member function readFrom() on null
Neví někdo co s tím prosím?
Děkuji moc :)
- David Matějka
- Moderator | 6445
v konstruktoru jeste nejsou injectnute zavislosti (pokud je tedy nepredavas pres konstruktor, samozrejme).. nejdrive se zavislostma pracuj v metode startup
edit1: jo a pouzivej parametry ve where, takhle si tam udelas bezpecnostni diru.
edit2: a `$shopIds = ` je akorat lokalni promenna, ne clenska promenna tridy, ale to uz jsou zaklady OOP
- harmim
- Člen | 26
Nevím co je ten databaseManager, ale např v dibi by to mělo vypadat nějak takhle
$connection->query('SELECT * FROM [table] WHERE [id] = %i', $id);
Nette database
$database->query('SELECT * FROM [table] WHERE [id] = ?', $id);
záleží na tom jak funguje ten tvůj databaseManager
edit1: musí to být udělané tak, že si připravíš dotaz, místo parametrů dáš nějaké zástupné znaky a potom tam ty parametry setneš
Editoval harmim (28. 1. 2016 21:43)