default.ctp从控制器cakephp获取信息

default.ctp从控制器cakephp获取信息,php,cakephp,cakephp-2.0,cakephp-2.1,Php,Cakephp,Cakephp 2.0,Cakephp 2.1,我目前正在尝试使用cakephp在php中创建自己的小型CMS。因此,它应该很容易修改网站。首先,我不是一个网络程序员,这只是业余时间 我有一个控制器按钮,一个按钮可以有多个类别。 因此,我试图将其加载到default.ctp中,以便为每个页面加载此菜单 default.ctp代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> <?php __('eg');

我目前正在尝试使用cakephp在php中创建自己的小型CMS。因此,它应该很容易修改网站。首先,我不是一个网络程序员,这只是业余时间

我有一个控制器按钮,一个按钮可以有多个类别。 因此,我试图将其加载到default.ctp中,以便为每个页面加载此菜单

default.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>
警告(2):为AppController中的foreach()[APP\View\Layouts\default.ctp,第20行]

提供的参数无效:

$this->loadModel('Button');
$buttons = $this->Button->find('all');
$this->set(compact('buttons'));
这将导致每个页面查询
按钮
表并将结果传递给视图,然后可通过
$buttons
变量访问该视图

如果您打算通过数据库处理菜单,我强烈建议您以一种或另一种形式查看缓存—在每个页面上强制执行这样的数据库调用可能不是最好的主意

有很多选项,但我看到的和喜欢的一个是将菜单保留在XML文件中-然后,无论何时更新/编辑/添加/删除
按钮,都可以更新XML文件。

在AppController中:

$this->loadModel('Button');
$buttons = $this->Button->find('all');
$this->set(compact('buttons'));
这将导致每个页面查询
按钮
表并将结果传递给视图,然后可通过
$buttons
变量访问该视图

如果您打算通过数据库处理菜单,我强烈建议您以一种或另一种形式查看缓存—在每个页面上强制执行这样的数据库调用可能不是最好的主意


有很多选项,但我看到并喜欢的一个是将菜单保留在XML文件中,然后,无论何时更新/编辑/添加/删除
按钮,都可以更新XML文件。

您也可以将div id=“navMenu”放入元素中,然后使用requestAction。请参阅Cake开发者之一的链接


您也可以将div id=“navMenu”放入元素中,然后使用requestAction。请参阅Cake开发者之一的链接


+1投票-我喜欢你的答案胜过我的-我完全忘记了这一点。+1投票-我喜欢你的答案胜过我的-我完全忘记了这一点。powtac:在AppController的beforeFilter()中,请确保所有控制器在beforeFilter操作中调用parent::beforeFilter()。谢谢!这就是我搜索的内容。powtac:在AppController的beforeFilter()中,请确保所有控制器在beforeFilter操作中调用parent::beforeFilter()。谢谢!这就是我一直在寻找的。