我在哪里可以将我的块保存在包含我所有菜单链接的cakephp目录结构中?

时间:2013-01-12 11:31:28

标签: php cakephp

我想在CakePHP中创建自定义主题。我在哪里可以将我的块保存在包含所有菜单链接的CakePHP目录结构中?我如何从View\Themed\MyTheme\Layouts\default.ctp获取文件?

3 个答案:

答案 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

如果我记得的话,这个过程与之前版本的蛋糕略有不同。