ZF:扩展模块indexController,或者在indexController中运行init()

发布于 2024-09-26 01:28:34 字数 694 浏览 2 评论 0原文

我正在考虑从indexController 扩展我的所有控制器。我在索引控制器中有一个 init() 函数,它可以做很多事情。这不是根据 fooController 请求执行的。

我已经注册了一个 viewSetup 插件。这对所有请求都执行,那就好了。

我的问题是博客模块需要做一些事情,而新闻模块不需要做这些事情。

一个很好的例子是我的二级菜单,它特定于活动模块。

class fooController extends indexController 通过这种方式,我还可以从 fooController 中重写 indexController 中的 init() 函数。不幸的是,自动加载器找不到indexController 类。

如果我首先需要 indexController.php 文件,那么以下方法可以工作,

<?php
require_once('indexController.php);

class fooController extends indexController {

    function init() {
        parent::init();

        // Do changes to, ie. setup controller specific menu, or add menu items.
    }
}

非常感谢:)

I was thinking about extending all my controllers from the indexController. I have in the index controller a init() function that does alot of stuff. This is not executed upon fooController request.

I allready have a registered a viewSetup plugin. And this is executed on all requests and thats just fine.

My problem is a have blog module which needs to do some stuff, that don't need to be done in the news module.

A good example is my secondary menu, its specific to the active module.

class fooController extends indexController In this way i could also override the init() function in indexController from within fooController. Unfortunately the autoloader can't find the indexController class.

The following works though, if i require the indexController.php file first

<?php
require_once('indexController.php);

class fooController extends indexController {

    function init() {
        parent::init();

        // Do changes to, ie. setup controller specific menu, or add menu items.
    }
}

Ideas much appreciated :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦里泪两行 2024-10-03 01:28:35

可能的解决方案,取决于您想要做什么:

  • 自定义抽象控制器类
  • bootstrap _init 方法
  • 操作助手
  • 重载方法
  • 控制器插件

看起来控制器插件在这种情况下是最好的(因为您已经在使用一个),
但您只需要向其添加一些条件,例如仅在请求特定模块、控制器和操作时才执行代码。请求

Possible solutions, depends what do you want to do:

  • custom Abstract controller class
  • bootstrap _init method
  • action helper
  • overloading methods
  • controller plugin

Looks like the controller plugin is the best in this case (since you are already using one),
but you just need to add some conditions to it, e.g. execute the code only when specific module, controller and action are requested.

心凉 2024-10-03 01:28:34

这似乎是 动作助手 的情况。您可以将常用功能打包到此类帮助程序中,并基于每个控制器(在 init() 方法中)或每个操作来调用它。

This seems to be a case for an action helper. You can package the common functionality into such a helper and invoke it on a per-controller basis (in the init() method) or an a per-action basis.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文