代码之家  ›  专栏  ›  技术社区  ›  Rene Terstegen

Zend框架小部件教程问题

  •  2
  • Rene Terstegen  · 技术社区  · 14 年前

    我试着遵循这个教程,但是我不能让它工作:

    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
    

    如何在索引控制器中使用handlelogin助手?我真的不知道,我正在寻找一个尝试超过一天,我几乎想把我的电脑扔到窗外;)。所以,任何帮助都将不胜感激!

    2 回复  |  直到 14 年前
        1
  •  2
  •   takeshin    14 年前

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

    有几点需要检查:

    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[] = 线路?

        2
  •  0
  •   Gordon Haim Evgi    14 年前

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

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

    帮助程序将获取当前控制器(该请求可能是哪个控制器),以获取视图实例并使用表单配置它。