0

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

4

3 回答 3

1

使用元素(如果您的导航栏显示在每个视图上)或使用视图块(如果导航栏仅显示在某些视图上)。

在您的 default.ctp 文件中,您只需执行..

echo $this->element('navbar');

这会将 Views/Elements/navbar.ctp 渲染到 Views/Layouts/default.ctp 上(如果您使用的是默认布局)。

于 2013-01-12T13:19:35.623 回答
0

只需将其放在/App/Views/Layouts. 如果你想在任何地方使用它,调用它default.ctp,它会自动被使用。否则,给它一个不同的名称,然后在控制器中执行:

public function some_action() {
    $this->layout = 'mylayout';
}

这将some_action使用您的布局而不是默认布局显示。

于 2013-01-12T11:37:33.430 回答
0

要访问:View\Themed\MyTheme\Layouts\default.ctp,在(Cake 2.1+)中,您必须告诉 cake 您要使用哪个主题,如下所示:

public $theme = 'MyTheme';
// or override in an action:
$this->theme = 'MyTheme';

然后:

$this->layout = 'default';

将参考您的View\Themed\MyTheme\Layouts\default.ctp.

如果 cake 在 中找不到请求的视图文件MyTheme,它将回退到app/View找到它。

通过这种方式,您可以根据需要覆盖主题中的视图。

因此,如果您将菜单放在 中View/Elements/menu.ctp,您的所有主题都可以访问它。如果你想覆盖它MyTheme,只需创建一个Elements/menu.ctpinside MyTheme

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

于 2013-01-12T13:18:46.403 回答