2016-07-30 9 views
0

Я хотел бы адаптировать мой код для выпечки контроллера (vendor/cakephp/bake/src/Template/Bake/Template/Bake/Controller/controller. ctp), поэтому при выпечке контроллера он автоматически определит, существует ли (model Translate-) поведение, установленное в модели, и добавьте «use Cake \ I18n \ I18n;» к контроллеру при выпечке.CakePHP 3 - Как идентифицировать установленное поведение в модели при выпечке контроллера

Итак, может ли кто-нибудь сказать мне, как определить установленное поведение внутри контроллера-выпечки?

+0

Знаете ли вы, что это будет работать только с классами таблиц, которые уже существуют при выпечке контроллера? Также знаете ли вы, что вы должны создавать собственные шаблоны выпечки в структуре шаблонов ваших приложений? Он читается так, как будто вы собираетесь изменять файлы поставщиков. – ndm

+0

Да, я знаю, что мне нужно создать пользовательские шаблоны выпечки в src/Template/Bake. Это то, что я делаю уже. – Lucky

+0

Когда я создаю новые таблицы с переведенными полями, я добавляю переведенные поля как «i18n_fieldName». В файлах выпечки Model и Entity я проверяю поля с «i18n_» и автоматически адаптирую код, чтобы добавить поведение «Перевести». Я также хочу сделать это в файле выпечки Controller: я должен добавить «use Cake \ I18n \ I18n;» в контроллере, когда есть поля с «i18n_» или когда в модели есть поведение «Перевести» ... При выпечке модели вы можете проверить массив $ validation для полей «i18n _...», но, судя по всему, массив $ validation недоступно в файле выпечки контроллера? – Lucky

ответ

0

Учитывая, что класс таблицы уже существует при выпечке контроллера, вы должны иметь возможность получить требуемую информацию от $modelObj, которая передается в представление, это экземпляр класса таблицы, связанного с контроллером.

Реестр поведения, доступный через Table::behaviors(), должен иметь необходимую информацию.

$modelObj->behaviors()->has('Translate') 

И, конечно, вы можете получить дополнительную информацию из таблицы, как и в схеме (Table::schema()), правила проверки (Table::validator()), и т.д ...

Смотрите также

+0

Спасибо! if ($ modelObj-> behaviors() -> has ('Translate')) {делает трюк! – Lucky