- Aplikace
- Databáze
- Šablony
- Formuláře
- Knihovny
- Návody
Š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.
