我目前正在尝试使用cakephp在php中创建自己的小CMS。这样修改网站应该很容易。首先,我不是网络程序员,这只是为了业余时间。
我有一个控制器按钮,一个按钮可以有多个类别。所以我试图将其加载到 default.ctp 中,以便为每个页面加载此菜单。
默认.ctp 代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
<?php __('eg'); ?>
<?php echo $title_for_layout; ?>
</title>
<?php
echo $this->Html->css('cake.generic.style');
echo $scripts_for_layout;
?>
</head>
<body>
<div class="wrapper">
<div class="header">
<h1>Electro Geers Bvba</h1>
</div>
<div id="navMenu">
<?php
foreach ($buttons as $button) {
echo '<ul>';
echo '<li><a href="' . h($button['Button']['naam']) . '.html">' . h($button['Button']['naam']) . '</a>';
if (!empty($button['Category'])) {
echo'<ul>';
foreach ($button['Category'] as $category) {
echo '<li><a href="' . $category['naam'] . '.html">' . $category['naam'] . '</a></li>';
}
echo'</ul>';
}
echo '</li>';
echo '</ul>';
}
?>
<br class="clearFloat" />
</div>
<div class="contents">
<h3>Sectionale poorten en Hekwerken</h3>
<?php echo $content_for_layout; ?>
</div>
<div class="footer">
Copyright © 2012 - 2017
</div>
</div>
</body>
我知道 cakephp 通常可能不应该这样使用,但我想知道这是否可能?如何将按钮名称加载到 default.ctp 中?
我目前收到此错误:
Notice (8): Undefined variable: buttons [APPViewLayoutsdefault.ctp, line 20]
警告 (2):为 foreach() 提供的参数无效 [APP\View\Layouts\default.ctp,第 20 行]
在你的应用控制器中:
$this->loadModel('Button');
$buttons = $this->Button->find('all');
$this->set(compact('buttons'));
这将导致每个页面查询buttons
表并将结果传递给视图,然后可以通过 $buttons
变量访问视图。
如果您要通过数据库处理菜单,我强烈建议您以一种或另一种形式进行缓存 - 可能不是在每个页面上强制进行此类数据库调用的最佳主意。
有很多选项,但我见过并喜欢的一个是将菜单保留在 XML 文件中 - 然后,任何时候更新/编辑/添加/删除您的buttons
......等,更新 XML 文件。
把div id="navMenu"放到一个元素中,然后使用requestAction。请参阅其中一位 Cake 开发人员的链接。
http://mark-story.com/posts/view/how-using-requestaction-increased-performance-on-my-site