Witam, zaprezentuje moje rozwiązanie tego problemu
posiadam plik konfiguracyjny bloków np:
<block>
<default>
<layout>index.tpl<layout>
<blocks>
<main controller="index" action="index" />
<info controller="index" action="info" />
</blocks>
</default>
<login>
<layout>login.tpl<layout>
<blocks>
<main controller="login" action="index" />
</blocks>
</login>
</block>
default - są zdefiniowane domyślnie odpalane bloki i szablon który ma je wykorzystać
login - jak wyżej ..
z odpaleniem default nie ma problemu ( odpalany domyślnie ) ale teraz jak odpalić login otóż posiadam aliasy na rutera które definiują w sobie odpalane bloki przykład pliku konfiguracyjnego aliasów
w szablonie wykorzystuje je w następujący sposób
<alias>
<login controller="logowanie" action="main" block="login"/>
<alias>
w kontrolerze definiuje "łapanie" bloków poprzez metode setBlock() np.
<?php
class indexAction extends AController
{
public function index(){
$view = $this->getView();
$this->setBlock('main', $view->parse('index/main.tpl');
}
public function info(){
$view = $this->getView();
$view->infoMSG = 'jakaś informacja';
$this->setBlock('info', $view->parse('index/info.tpl');
}
}
class logowanieAction extends AController
{
public function main(){
$view = $this->getView();
$this->setBlock('main', $view->parse('logowanie/main.tpl');
}
}
?>
i wykorzystuje je w szablonie głównym poprzez taką linijkę
<?php print $this->block->main?>
... mam nadzieje że przedstawiłem to w miare zrozumiale ..
PS1. moim zdaniem definiowanie odpalanych bloków w akcji jest delikatnie chybione, bo gdy chcemy wzbogacić widoko jakieś dodatkowe bloki trzeba przeszukać klasy akcji i je zmodyfikować, a trzymając to w jednym nie pogubimy się przy większych projektach ..
PS2. można też zrobić pomocnika dla widoku który odpala odpowiednie akcje tj ..
<?php print $this->block->run('index', 'main');?>
wtedy zabawa nie jest już tak hardkorowa z plikami konfiguracyjnymi ... ale czy jest to zgodne z MVC

co o tym sądzicie ..