#cakephp #cakephp-3.x #cake-bake
#cakephp #cakephp-3.x #cake-выпекать
Вопрос:
Я создаю пользовательский шаблон для выпечки, и я хотел бы получить тип столбца таблицы DB и комментарии к расположению файла контроллера: Template Bake Element Controllerindex.twig, когда я использую код {% set fields = Bake.filterFields(fields, schema, modelObj) %}
, который я нашел в файле Template Bake Element form.twig,он возвращает ошибки, показывающие поля, схема равна нулю.
Может кто-нибудь, пожалуйста, помочь, как я могу получить тип столбца таблицы DB и комментарии к файлу контроллера? Поскольку я хочу добавить МАССИВ ПОЛЕЙ в набор записей, созданный командой Bake.
CakePHP v3.8.2 и Bake v1.x
Спасибо.
Комментарии:
1. Пожалуйста, всегда указывайте точную версию CakePHP (последняя строка
vendor/cakephp/cakephp/VERSION.txt
) — спасибо!
Ответ №1:
Controller
Команда не устанавливает схему или ее столбцы для представления, вам придется получить это самостоятельно с помощью table object ( modelObj
), либо внутри вашего шаблона:
{% set schema = modelObj.getSchema() %}
{% set fields = schema.columns() %}
{% set fields = Bake.filterFields(fields, schema, modelObj) %}
или с помощью прослушивателя событий для Bake.beforeRender.Controller.controller
события, которое отправляется перед отображением шаблона контроллера и позволяет получить доступ к представлению и его переменным:
// in config/bootstrap_cli.php
use CakeEventEvent;
use CakeEventEventManager;
EventManager::instance()->on(
'Bake.beforeRender.Controller.controller',
function (Event $event) {
/** @var CakeViewView $view */
$view = $event->getSubject();
/** @var CakeORMTable $table */
$table = $view->get('modelObj');
$schema = $table->getSchema();
$fields = $schema->columns();
$view->set(compact('schema', 'fields'));
}
);
Смотрите также