Předání proměnných mezi funkcemi action a render v presenteru
- vosy
- Člen | 512
Ahoj, chtěl jsem se zeptat zda mohu nějak předávat proměnné mezi funkcí actionUpravit() a renderUpravit()
např:
public function actionUpravit($id)
{
$id = intval($id);
$email_info = $this->emailManager->getEmailById($id);
if (!$email_info) {
$this->redirectDoesntExistPage();
}
....
...
}
public function renderUpravit($id)
{
$id = intval($id);
$email_info = $this->emailManager->getEmailById($id);
$this->template->email = $email_info['email'];
}
ve fci ACTION chci zjistit zda email existuje a ve fci RENDER chci předávat
proměnné do šablony.
Ale otázka zní jestli proměnou $email_info mohu nějak rozumně předat do
fce RENDER abych nevolal znova DTB.
Případně jak byste to řešili nebo řešítě.
Dix
Editoval vosy (4. 12. 2022 21:02)
- David Grudl
- Nette Core | 7935
class MyPresenter
{
private $emailInfo;
function actionUpravit()
{
$this->emailInfo = $this->emailManager->getEmailById($id);
}
function renderUpravit()
{
$this->template->email = $this->emailInfo['email'];
}
}
- dakur
- Člen | 416
actionUpravit
a renderUpravit
nejsou funkce, ale
metody třídy (presenteru). Funkce nemají žádný kontext, kdežto metody
mají kontext své třídy – mohou přistupovat k vlastnostem (properties)
dané třídy. Pokud si tedy uložíš e-mail do takové property, můžeš
k ní pak přistupovat v render metodě – jak píše David. Je to
běžná praxe.
Editoval dakur (5. 12. 2022 10:12)