Citat:
jablan MVC kaže (na primeru npr. bloga): evo u ovom fajlu definišeš šta ti je blog post, u ovom šta je komentar na post, u ovom fajlu definišeš akcije koje se izvršavaju kad korisnik komentariše blog post, u ovom fajlu definišeš kako se renderuje blog post itd.
Eto, na primer, meni se to nikako ne svidja. Sve ono sto je vezano za prikaz ostavljam
iskljucivo u Smarty .tpl fajlu, php mi sluzi samo za logiku. Interesuje me vase misljenje o tome kako sad radim.
Dacu primer koda koji admin-u dozvoljava dodavanje i izmenu kategorija (necega, nije bitno).
Code:
class CategoryManager extends AdminManager
{
public function edit($id)
{
$category = Category::getById($id) ;
$this->assign('category', parent::edit($category)) ;
}
public function add()
{
$category = new Category();
$this->assign('category', parent::add($category)) ;
}
...
Ovo gore je kompletna logika za dodavanje novih kategorija, radi prikaz gresaka i na kraju snima. Tajna je u parent::edit i parent::add metodama, ali to nije sad bitno.
Moj kontrolor prvo startuje zeljenu metodu, a zatim Smarty prikaze .tpl fajl sa istim imenom. 'add.tpl' izgleda ovako:
Code:
{if $tplPage==1}
<form action="{$c->CategoryManager->add()}" method="post" >
{include file='CategoryManager/_categoryForm.tpl'}
</form>
{elseif $tplPage==2}
<h2>Category saved </h2>
{/if}
i sama forma:
Code:
<div class="{if $e.name}error{/if}">
<label>Name</label>
<input name="name" type="text" value="{$category->name}">
</div>
<div class="{if $e.title}error{/if}">
<label>Title</label>
<input name="title" type="text" value="{$category->title}">
</div>
Kako ovo radi:
add ce prikazati praznu formu. Korisnik ukuca podatke, ali je recimo 'title' pogresan. Kad posalje formu, ponovo ce se prikazati forma ali ce $e.title da postoji i prikazace se gde je greska. To se ponavlja sve dok korisnik ne popuni podatke pravilno.
Za edit je slicno.
Ni u jednom framework-u ovo nisam video kako da uradim pa sam zato napisao svoju MVC arhitekturu.
Moze neki komentar na ideju?