Šablony v aplikaci

Aplikace používá třídu Template jen s drobnými úpravami. Cesty jsou vždy brány relativně k templates adresáři aplikace. Dále jsou šablony automaticky nastavovány dle routingu.

Ovlivnění šablony nebo layoutu

Pokud chcete změnit výchozí layout nebo šablonu, stačí v controlleru pozměnit routing:

public function testAction()
{
    $this->routing->layout = "new-layout";
    $this->routing->template = "moje-sablona";
}

Přípony a cesty se doplní automaticky. To stejné platí pro trigger {include '...'}.

Služby

Controller automaticky detekuje aktivní služby a dle definovaných pravidel načte potřebný layout a helpery. Tyto pravidla si můžete jednoduše upravit ve svém controlleru, výchozí nastavení je takovéto:

class AppController extends Controller
{
    protected $services = array(
        'rss' => array(
            'layout' => 'rss-layout',
            'helpers' => array('rss'),
        ),
        'xml' => array(
            'layout' => 'xml-layout',
        ),
    );
}

V případě layoutů tedy nedochází k přidání přípony s názvem služby, ale mění se název daného layoutu. Toto chování si ale samozřejmě můžete změnit ve svém controlleru.

Přepsání způsobu dohledávání šablon

V controlleru můžete jednoduše přepsat metody, které tvoří cestu k šablonám. Díky této možnosti si třeba můžete doprogramovat možnost uložení šablon v složce u controlleru.

class AppController extends Controller
{
    /**
     * Returns template relative path
     * @param array $modules
     * @param string $controller
     * @param string $template
     * @param string $service
     * @param string $ext
     * @return string
     */
    protected function constructTemplatePath($modules, $controller, $template, $service, $ext)
    {
        $module = null;
        if (!empty($modules))
            $module = implode('/', $modules) . '/';

        if (!empty($service))
            $service = ".$service";

        return "/controllers/$module$controller-templates/$template$service.$ext";
    }
    /**
     * Returns layout template relative path
     * @param array $modules
     * @param string $layout
     * @param string $ext
     */
    protected function constructLayoutTemplatePath($modules, $layout, $ext)
    {
        $module = null;
        if (!empty($modules))
            $module = implode('/', $modules) . '/';

        return "/controllers/$module$controller->templates/$layout.$ext";
    }
}

Stejným způsobem si můžete přepsat generování cest i pro chybové šablony. Více naleznete v api.