默认布局 cakePHP
Posted
技术标签:
【中文标题】默认布局 cakePHP【英文标题】:Default layout cakePHP 【发布时间】:2015-03-06 12:12:02 【问题描述】:我有一个简单的问题,我正在尝试使用带有页眉和页脚的 ONE 默认布局,以便在制作其他 .ctp 文件时自动显示它们,但由于某种原因,我无法做到这一点,而且我也在考虑使用一个javascript 文件也显示在所有其他页面中,有人可以举例说明如何使一个默认文件的页眉和页脚显示在所有其他文件上。
感谢您的帮助
【问题讨论】:
版本是2.6.2 据我所知,您在 layout.ctp 调用中定义footer
和 header
,然后像这样:<?php echo $this->Element('footer'); ?>
。然后尝试检查...接下来,您可以在AppController
中的beforeSave
函数中调用您的布局,如下所示:$this->layout = 'layout';
。这将确保您的所有页面都加载 header
和 footer
内容
您有具体问题吗?或者你只是不知道该怎么做?因为在 cakePHP 中使用布局是一个直接的过程。如果您只需要一种布局,您甚至不需要在控制器中指定它,只需将您的 default.ctp
布局放在您的 app/views/layout/
文件夹中,您在其中包含的任何 .css 或 .js 都将在您的所有视图
@YerkoPalma 问题是我有一个带页脚的 default.ctp,但由于某种原因,我有另一个文件 sp.ctp 但页脚没有显示,这就是我遇到的问题。
如果你不使用 sp.ctp
删除它。您的页脚是 element
还是您的布局的一部分?
【参考方案1】:
这里是你的 default.ctp 示例
default.ctp
<html>
<head>
<!--
//here your javascript yourscript.js
//It will be present in all your views.
//the file has to be present in /app/webroot/js
-->
echo $this->Html->script('yourscript');
</head>
<body>
<!--
//header
//the file header.ctp has to be present in /View/Elements
-->
echo $this->element('header');
<!--
//here the content, for example from /View/Posts/edit.ctp
-->
echo $this->fetch('content');
<!--
//footer
//the file footer.ctp has to be present in /View/Elements
-->
echo $this->element('footer');
</body>
</html>
$this->fetch('content') 是 CakePHP 的“神奇”部分。此处将获取您的视图。
【讨论】:
OP,这是最好的选择。无论您需要重复使用什么项目,都将其创建为“元素”。这样你就可以有一个一致的页眉和页脚,你可以在多个布局中使用。以上是关于默认布局 cakePHP的主要内容,如果未能解决你的问题,请参考以下文章
如何更改自定义 UICollectionView 布局引擎中的默认布局动画曲线?