Cannot include undefined parent block ‚title‘
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- cirdaz
- Člen | 21
Dobrý den,
pár dnů zkouším nette a nemůžu rozjet šablony.
Pořád mi to píše
Cannot include undefined parent block ‚title‘.
Nevím kde ho definovat.
Aplikoval jsem funkci v adminModul v basePresenteru tak abych mohl načítat
více layoutů včetně šablon
třeba layout default, modry zeleny zluty atp…
ale nemůžu se překousat základy. Děkuji za rady.
<?php
/**
* function formatLayoutTemplateFiles
*
* Zmeni cestu k sablonam layoutu: APP_DIR/Module/templates/theme/...
* Pro jistotu se s nejnizsi prioritou bude hledat i v puvodnim adresari
*/
public function formatLayoutTemplateFiles($presenter, $layout)
{
$appDir = Environment::getVariable('appDir');
$theme = Environment::getVariable('theme');
$path = '/' . str_replace(':', 'Module/', $presenter);
$templatesTheme = '/templates/' . $theme;
$pathP = substr_replace($path, $templatesTheme, strrpos($path, '/'), 0);
$list = array(
"$appDir$pathP/@$layout.latte",
"$appDir$pathP.@$layout.latte",
"$appDir$pathP/@$layout.phtml",
"$appDir$pathP.@$layout.phtml",
);
#dump($list);exit;
while (($path = substr($path, 0, strrpos($path, '/'))) !== FALSE) {
$list[] = "$appDir$path$templatesTheme/@$layout.latte";
$list[] = "$appDir$path$templatesTheme/@$layout.phtml";
}
$list = array_merge($list, parent::formatLayoutTemplateFiles($presenter, $layout));
return $list;
}
?>
Pak jsem pozměnil i funkci
<?php
/**
* Formats view template file names.
* @param string
* @param string
* @return array
*/
public function formatTemplateFiles($presenter, $view)
{
/*$appDir = Environment::getVariable('appDir');
$path = '/' . str_replace(':', 'Module/', $presenter);
$pathP = substr_replace($path, '/templates', strrpos($path, '/'), 0);
$path = substr_replace($path, '/templates', strrpos($path, '/'));
return array(
"$appDir$pathP/$view.latte",
"$appDir$pathP.$view.latte",
"$appDir$pathP/$view.phtml",
"$appDir$pathP.$view.phtml",
"$appDir$path/@global.$view.phtml", // deprecated
);*/
$appDir = Environment::getVariable('appDir');
$theme = Environment::getVariable('theme');
$path = '/' . str_replace(':', 'Module/', $presenter);
$templatesTheme = '/templates/' . $theme;
$pathP = substr_replace($path, $templatesTheme, strrpos($path, '/'), 0);
return array(
"$appDir$pathP/@$view.latte",
"$appDir$pathP.@$view.latte",
"$appDir$pathP/@$view.phtml",
"$appDir$pathP.@$view.phtml",
"$appDir$path/@global.$view.latte", // deprecated
"$appDir$path/@global.$view.phtml", // deprecated
);
}
?>
- bojovyletoun
- Člen | 667
Myslím že tenhle dotaz tu byl. Podle mě je nějaká chybička tam, kde se
skládají ty stringy: "$appDir$pathP.@$layout.phtml"
, asi to bude
mravenčí práce, najít co blbne.
neexistuje jednodušší možnost, jak definovat skinovatelnost?
- prosté $presenter->setLayout
- definovat $presenter->template->skin a s tou proměnnou pracovat v šabloně při includování (nebo extends) další pod(nad)šablon?