Problém s třídou Contact dědící z DibiRow
- Mesiah
- Člen | 240
Ahoj,
mám problém s třídou Contact. V presenteru v akci show předávám
šabloně výsledek, jenže při renderingu mi laděnka hlásí, že pracuji
s nedefinovanou property.
Contact:
class Contact extends DibiRow
{
public function __construct($arr = array())
{
return parent::__construct($arr);
}
public function save()
{
return dibi::update('[contact]', (array) $this)->execute();
}
public function delete()
{
return dibi::delete('[contact]')->execute();
}
public function read()
{
return dibi::select('*')->from('[contact]')->execute()->setRowClass('Contact');
}
}
ContactPresenter
class ContactPresenter extends BasePresenter
{
private $__contact;
public function actionShow()
{
}
public function renderShow()
{
$this->template->contact = $this->contact->read();
}
public function getContact()
{
if (!isset($this->__contact))
{
$this->__contact = new Contact();
}
return $this->__contact;
}
}
a šablona
{block content}
<p>Email: {$contact->email}</p>
<p>ICQ: {$contact->icq}</p>
<p>MSN: {$contact->msn}</p>
<p>Skype: {$contact->skype}</p>
Můžete mi poradit, v čem může být problém..?
- Mesiah
- Člen | 240
Děkuji, opravdu to bylo tím.
Na druhou stranu, bylo by fajn, kdybych ve view nemusel pracovat s polem,
ale přímo s objektem Contact…
Zkoušel jsem předtím, než do template dostanu
$this->contact->read();
přetypovat na
typ (Contact)
$this->template->contact = (Contact) $this->contact->read();
Jenže to není správný přístup (dostávám chybu „Parse error“), jak by šlo něčeho podobného docílit? Změnou modelu, rep. jeho metody read(), aby vracela jiný typ? Jaký?
- Blizzy
- Člen | 149
Mesiah napsal(a):
Jejda, to mě mohlo napadnout. :) Děkuji
BTW: zajímalo by mě, kam se v adresářové struktuře aplikace dávají objekty komponent?
Záleží to na tobě, stačí to umístit tam, kam došáhne RobotLoader (většinou složky libs a app). Jednou z možností je složka app/compnents.