Zend框架2动作助手?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zend框架2动作助手?相关的知识,希望对你有一定的参考价值。

我正在将ZF1应用程序迁移到ZF2,这是使用动作帮助程序类UserBuilder的控制器中的代码:

$userBuilder = $this->userBuilder;

目前页面抱怨:

Notice: Undefined property: StockControllerScreenerController::$userBuilder

从<Recommended Project Directory Structure>,我们可以看到目录application / controllers / helpers仍然存在。

我在Zend Framework 1中有很多控制器动作助手。我很好奇Zend Framework 2中是否有一些概念?以及如何迁移它们?

答案

很久以前,我在莫斯科的ZFCon 2012上看过Enrico Zimuel的演示文稿,在你的管中,我无法找到相关的链接,

但我可以在幻灯片分享中找到他的演示文稿,下面是链接

ZF2 quick start

在演示文稿中,Enrico Zimuel建议一个git存储库,它托管一个作为模拟器的示例应用程序。

下面是git存储库的链接,它实际上是一个迁移到ZF2的示例ZF1应用程序。它就像一个模拟器,用ZF1代码测试ZF2。

ZF2 migration prototype

它是ZF1迁移原型

实际上

  1. 创建ZF1调度程序的“Zf1Compat”版本作为事件侦听器。
  2. 引导程序很大程度上模仿了ZF1的Zend_Application引导程序的工作原理。
  3. 默认路由使用新的ZF2 MVC路由,但模仿ZF1提供的内容。

我发布这个只是提到有一个解决方案来解决迁移问题非常好。

这也可以帮助其他需要迁移的人,因为没有人知道有一个git存储库有这个原型,我没有看到任何博客发布或SO发布指定这个存储库链接的任何地方(我真的不知道为什么?)。

注意 : -

这只会减少您的迁移工作,您将失去ZF2的许多优点,而且您无法真正利用框架的功能。

另一答案

Zend 1动作助手对应Zend 2控制器插件。

您只需进行一些更改即可完成此项工作。

在Zend 2中创建控制器插件的一种方法是:

  • 在Controller下创建一个文件夹。 “模块/应用/ SRC /控制器/插件”
  • 在使用插件名称创建的文件夹下创建一个php文件,例如。 MyPlugin.php并添加以下内容:
namespace ApplicationControllerPlugin;

use ZendMvcControllerPluginAbstractPlugin;

class MyPlugin extends AbstractPlugin {

    public function doSomething()
    {
        // put your code here
        return '1';
    }

}
  • 添加到您的module.config.php(例如module / Application / config / module.config.php)控制器插件:
    'controller_plugins' => array(
        'invokables' => array(
            'Plugin1' => 'ApplicationControllerPluginMyPlugin',
        )
    ),
  • 在控制器中使用它,例如。
    class IndexController extends AbstractActionController
    {
        public function indexAction()
        {
            $plugin = $this->Plugin1(); // or $this->plugin('Plugin1');
            echo $plugin->doSomething();
            return new ViewModel();
        }
    }

不要将Zend 1插件与Zend 2控制器插件混淆,这些都是不同的东西。

以上是关于Zend框架2动作助手?的主要内容,如果未能解决你的问题,请参考以下文章

设置 zend 框架动作控制器

zend 框架显示/处理表单使用相同的动作/视图?

php - Zend Framework中的冲突视图助手名称

Codeigniter 助手重复 HTML 代码片段

使用 Zend_View_Helper_* 读取助手并自动加载

使用带有默认模块布局的管理模块中的 Zend 视图助手