Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp静态数据收集_Php_Cakephp - Fatal编程技术网

Cakephp静态数据收集

Cakephp静态数据收集,php,cakephp,Php,Cakephp,我不确定该怎么称呼这个问题,但我的问题是: 我正在用Cakephp创建一个webshop。为此,我有很多不同的类别绑定到一个静态菜单行 现在,无论您在网上商店的什么位置,您都可以看到这些类别 所有类别都存储在数据库中,然后循环到默认布局中(这意味着如果我添加一个新类别,它将自动将其自身添加到菜单行) 我的问题是,无论您在我的应用程序中位于何处,所有这些类别都必须被提取。我如何收集它们 我能想到的唯一方法是在每个控制器中收集它们,并将它们设置为$\u会话变量,然后检查变量是否已设置 我知道一定有别

我不确定该怎么称呼这个问题,但我的问题是:

我正在用Cakephp创建一个webshop。为此,我有很多不同的类别绑定到一个静态菜单行

现在,无论您在网上商店的什么位置,您都可以看到这些
类别

所有
类别
都存储在
数据库
中,然后循环到默认布局中(这意味着如果我添加一个新类别,它将自动将其自身添加到菜单行)

我的问题是,无论您在我的应用程序中位于何处,所有这些类别都必须被提取。我如何收集它们

我能想到的唯一方法是在每个
控制器中收集它们,并将它们设置为
$\u会话
变量,然后检查变量是否已设置

我知道一定有别的办法,但怎么办

Im使用的是
CakePHP 2.4

此外,我的应用程序的菜单在
Layouts->default.ctp


这意味着它不关心您所处的控制器或操作。这意味着必须在
操作
听起来像是在寻找回调之前加载类别。在基本控制器上定义它(很可能是
AppController
),只需将类别设置为视图变量,这样数据就可用于扩展基本控制器的控制器上的所有布局

下面是一个抽象的例子,它可能看起来像什么:

...

class AppController extends Controller
{
    ...

    public $uses = array
    (
        'Category'
    );

    public function beforeFilter()
    {
        parent::beforeFilter();

        $this->set('categories', $this->Category->find('all'));
    }

    ...
}
在布局中,您可以简单地检查是否存在
$categories
,然后执行您必须执行的任何操作

if(isset($categories))
{
    // show the category menu
}

我会像这样创建一个合适的组件

class CategoryLoaderComponent extends Component {

    public function beforeRender($controller)
    {
        parent::beforeRender($controller);
        $controller->loadModel('Category');
        $categories = $controller->Category->find('list');
        $controller->set('categories', $categories);
    }

}

这样,使用此组件的每个控制器都将自动设置$categories变量

请始终提及您的确切CakePHP版本!为什么你会考虑适当地/必要地在会话中存储数据?为了回答这个问题,人们需要了解您的应用程序结构是否有什么特殊之处?您只需要在布局、视图和/或元素中访问数据,不是吗?@ndm完全按照我的想法更新了我的问题,但不确定是否可以完成。谢谢!