Как мне создать и использовать помощник формы в плагине?

#cakephp-3.7

#cakephp-3.7

Вопрос:

Я пытаюсь расширить FormHelper, чтобы включить некоторые пользовательские элементы управления. Я хочу сделать это как часть плагина. Документация немного схематична о том, как этого добиться.

Я создал желаемый помощник в следующей структуре папок:

 pluginsMyPluginsrcViewHelperMyFormHelper
  

Помощник выглядит следующим образом:

 <?php

use CakeViewHelperFormHelper 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 по умолчанию для приложения. Есть className вариант loadHelper , но я не могу найти способ заставить это работать и с помощником плагина.

Ответ №1:

Мне не хватало пространства имен для помощника. Должно быть так:

 <?php

  namespace MyPluginViewHelper
  use CakeViewHelperFormHelper as BaseFormHelper;

  class MyFormHelper extends BaseFormHelper
  {
  }