我想在CakePHP中创建自定义主题。我在哪里可以将我的块保存在包含所有菜单链接的CakePHP目录结构中?我如何从View\Themed\MyTheme\Layouts\default.ctp
获取文件?
答案 0 :(得分:1)
使用Elements(如果您的导航栏显示在每个视图中)或使用View Blocks(如果某些视图仅显示导航栏)。
在default.ctp文件中,您只需执行..
echo $this->element('navbar');
将Views / Elements / navbar.ctp呈现到Views / Layouts / default.ctp(如果您使用的是默认布局)。
答案 1 :(得分:0)
只需将其放在/App/Views/Layouts
下即可。如果您想在任何地方使用它,请将其称为default.ctp
,它将自动使用。否则,给它一个不同的名称,然后在控制器中执行:
public function some_action() {
$this->layout = 'mylayout';
}
这将使用您的布局而不是默认值显示some_action
。
答案 2 :(得分:0)
要访问:View\Themed\MyTheme\Layouts\default.ctp
,在(Cake 2.1+)中,你必须告诉蛋糕你想要使用哪个主题:
public $theme = 'MyTheme';
// or override in an action:
$this->theme = 'MyTheme';
然后:
$this->layout = 'default';
将引用您的View\Themed\MyTheme\Layouts\default.ctp
。
如果蛋糕在MyTheme
中找不到请求的视图文件,它将回退到app/View
以找到它。
通过这种方式,您可以根据需要覆盖主题中的视图。
因此,如果您将菜单放在View/Elements/menu.ctp
中,您的所有主题都可以访问它。如果您要为MyTheme
覆盖它,只需在Elements/menu.ctp
内创建MyTheme
。
如果我记得的话,这个过程与之前版本的蛋糕略有不同。