Контроллер шаблонов выпечки CakePHP

#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'));
    }
);
  

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