如何在插件中创建和使用表单助手?

How do I create and use a Form helper in a plugin?

我正在尝试扩展 FormHelper 以包含一些自定义控件。我想把它作为插件的一部分来做。该文档对如何实现这一点有点粗略。

我已经在以下文件夹结构中创建了所需的助手:

\plugins\MyPlugin\src\View\Helper\MyFormHelper

助手看起来像这样:

<?php

use Cake\View\Helper\FormHelper as BaseFormHelper;

class MyFormHelper extends BaseFormHelper
{
}

...是的,现在是空的。插件的文档有点模糊,但似乎说可以在主应用程序的 AppView.php::initialise() 方法中以下列方式加载此助手:

$this->loadHelper('MyPlugin.MyFormHelper');

但是这不起作用。这样做我得到一个致命错误:

Fatal error: Cannot declare class MyFormHelper, because the name is already in use in /Users/geoidesic/MyApp/plugins/MyPlugin/src/View/Helper/MyFormHelper.php on line 12

那么问题来了,如何使用这个插件助手呢?具体来说,我想覆盖应用程序的默认 FormHelper。 loadHelper 有一个 className 选项,但我也找不到使用插件助手的方法。

我缺少助手的命名空间。应该是这样的:

<?php

  namespace MyPlugin\View\Helper
  use Cake\View\Helper\FormHelper as BaseFormHelper;

  class MyFormHelper extends BaseFormHelper
  {
  }