2

我尝试按照本教程进行操作,但无法正常工作:

http://weierophinney.net/matthew/archives/246-Using-Action-Helpers-To-Implement-Re-Usable-Widgets.html

我按照描述做了所有事情,但我不知道如何在我的控制器中使用它。我的文件系统如下所示:

- application
    - controllers
        - IndexController.php
    - modules
        - user
            - configs
                user.ini
            - controllers
            - forms
                Login.php
            - helpers
                HandleLogin.php
            - views
                - scripts
                    login.phmtl
                    profile.phtml
            Bootstrap.php
    - views

如何在我的 IndexController 中使用 HandleLogin Helper?我真的不知道,我正在寻找超过一天的尝试,我几乎想把我的电脑扔出窗外;)。所以任何帮助将不胜感激!

4

2 回答 2

2

看起来小部件插件没有在任何地方调用。

几件事情要检查:

  1. 你有这个模块Bootstrap.php的文件吗?

  2. 这个引导文件有_initWidgets()方法吗?

  3. 此方法是否调用:

    $widget = new Module_Widget_Name; // is it callable?
    Zend_Controller_Action_HelperBroker::addHelper($widget);

  4. 你注册了widget资源吗?

    public function _initResourceLoader()
    {
    $loader = $this->getResourceLoader();
    $loader->addResourceType('helper', 'helpers', 'Helper');
    $loader->addResourceType('widget', 'widgets', 'Widget');

     return $loader;
    

    }

  5. 是否application.ini包含resources.modules[] =行?

于 2010-10-22T10:59:14.920 回答
0

你没有。本教程的重点是创建一个独立于任何特定控制器运行的可重用小部件。当应用程序收到请求时,它将运行它的调度周期并自动触发 preDispatch 上的操作助手:

现在,让我们看看动作助手本身。提醒一下,动作助手可以定义 init() 的钩子(每次传递给新控制器时由助手代理调用), preDispatch() (在执行控制器的 preDispatch() 钩子和执行动作之前调用) , 和 postDispatch() (在动作和控制器的 postDispatch() 例程之后执行)。

助手将获取当前控制器(无论哪个可能用于该请求)以获取 View 实例并使用表单对其进行配置

于 2010-10-20T15:34:55.213 回答