Zend Framework小部件教程问题

时间:2010-10-20 14:58:41

标签: php zend-framework helpers

我尝试按照本教程,但我无法让它工作:

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?我真的不知道,我正在寻找一天以上的尝试,我几乎想把我的电脑扔出窗外;)。所以任何帮助都将不胜感激!

2 个答案:

答案 0 :(得分:2)

看起来小部件插件不会在任何地方调用。

很少有事情要检查:

  1. 您是否有模块的Bootstrap.php个文件
  2. 此引导程序文件是否具有_initWidgets()方法?
  3. 此方法是否调用:

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

  4. 您是否注册了小部件资源?

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

    return $loader;
    

    }

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

答案 1 :(得分:0)

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

  

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

帮助程序将获取当前控制器(无论该请求可能是哪个)以获取View实例并使用表单

进行配置