我正在将ZF1应用程序迁移到ZF2,这是控制器中使用动作帮助程序类UserBuilder的代码:
$userBuilder = $this->userBuilder;
目前页面抱怨:
Notice: Undefined property: Stock\Controller\ScreenerController::$userBuilder
从< Recommended Project Directory Structure>,我们可以看到目录application / controllers / helpers仍然存在。
我在Zend Framework 1中有很多控制器动作助手。我很好奇Zend Framework 2中是否有一些概念?以及如何迁移它们?
答案 0 :(得分:1)
很久以前,我在莫斯科的ZFCon 2012上看过Enrico Zimuel的演示文稿,在你的管中,我无法找到相关的链接,
但我可以在幻灯片分享中找到他的演示文稿,下面是链接
在演示文稿中,Enrico Zimuel建议一个git存储库,它托管一个作为模拟器的示例应用程序。
下面是git存储库的链接,它实际上是一个迁移到ZF2的示例ZF1应用程序。它就像一个模拟器,用ZF1代码测试ZF2。
这是一个ZF1迁移原型
实际上
我发布这个只是提到有一个解决方案来解决迁移问题非常好。
这也可以帮助其他需要迁移的人,因为没有人知道有一个git存储库有这个原型,我还没有看到任何博客发布或SO发布指定这个存储库链接的任何地方(我真的不喜欢)知道为什么吗?)。
注意: -
这只会减少你的移民工作,你会失去很多 ZF2的优点,也无法真正利用a的功能 框架。
答案 1 :(得分:0)
Zend 1动作助手 对应 Zend 2控制器插件 。
您只需进行一些更改即可实现此功能。
在Zend 2 中创建控制器插件的一种方法是:
在Controller下创建一个文件夹,例如。 “模块/应用/ SRC /控制器/插件”
在使用插件名称创建的文件夹下创建一个php文件,例如。 MyPlugin.php并添加以下内容:
namespace Application\Controller\Plugin;
use Zend\Mvc\Controller\Plugin\AbstractPlugin;
class MyPlugin extends AbstractPlugin {
public function doSomething()
{
// put your code here
return '1';
}
}
'controller_plugins' => array(
'invokables' => array(
'Plugin1' => 'Application\Controller\Plugin\MyPlugin',
)
),
class IndexController extends AbstractActionController
{
public function indexAction()
{
$plugin = $this->Plugin1(); // or $this->plugin('Plugin1');
echo $plugin->doSomething();
return new ViewModel();
}
}
不要将Zend 1插件与Zend 2控制器插件混淆,这些不同的东西。