FormIt и расширение модели

Добрый день,

Подскажите затупку как расширить модель FormIt

Я хочу добавить в общую табличку картинку вот так
yadi.sk/i/NiuxZK7tNXPp6w

Я создал в БД поле
yadi.sk/i/TbDR0LDMHw5H4g

Потом в файле, который отвечает за рендер таблички прописал поля

yadi.sk/i/7A618k_pdx00oQ

Потом пошел в shema и прописал там
<?xml version="1.0" encoding="UTF-8"?>
<model package="formit" baseClass="xPDOObject" platform="mysql" defaultEngine="InnoDB" phpdoc-package="formit">
    <object class="FormItForm" table="formit_forms" extends="xPDOSimpleObject">
        <field key="form" dbtype="varchar" precision="255" phptype="string" null="false" default=""/>
        <field key="context_key" dbtype="varchar" precision="100" phptype="string" null="false" default=""/>
        <field key="values" dbtype="text" phptype="string" null="false" default=""/>
        <field key="ip" dbtype="varchar" precision="100" phptype="string" null="false" default=""/>
        <field key="date" dbtype="int" precision="11" phptype="integer" null="false" default=""/>
        <field key="encrypted" dbtype="tinyint" precision="1" phptype="boolean" null="false" default="0"/>
        <field key="encryption_type" dbtype="int" precision="2" phptype="integer" null="false" default="1"/>
        <field key="hash" dbtype="varchar" precision="255" phptype="string" null="false" default=""/>
      <field key="images" dbtype="varchar" precision="255" phptype="string" null="false" default=""/>
    </object>
</model>
в formitform.map.inc.php

прописал
<?php
/**
 * @package formit
 */
$xpdo_meta_map['FormItForm']= array (
  'package' => 'formit',
  'version' => NULL,
  'table' => 'formit_forms',
  'extends' => 'xPDOSimpleObject',
  'tableMeta' => 
  array (
    'engine' => 'InnoDB',
  ),
  'fields' => 
  array (
    'form' => '',
    'context_key' => '',
    'values' => '',
    'ip' => '',
    'date' => 0,
    'encrypted' => 0,
    'encryption_type' => 1,
    'hash' => '',
  ),
  'fieldMeta' => 
  array (
    'form' => 
    array (
      'dbtype' => 'varchar',
      'precision' => '255',
      'phptype' => 'string',
      'null' => false,
      'default' => '',
    ),
    'context_key' => 
    array (
      'dbtype' => 'varchar',
      'precision' => '100',
      'phptype' => 'string',
      'null' => false,
      'default' => '',
    ),
    'values' => 
    array (
      'dbtype' => 'text',
      'phptype' => 'string',
      'null' => false,
      'default' => '',
    ),
    'ip' => 
    array (
      'dbtype' => 'varchar',
      'precision' => '100',
      'phptype' => 'string',
      'null' => false,
      'default' => '',
    ),
    'date' => 
    array (
      'dbtype' => 'int',
      'precision' => '11',
      'phptype' => 'integer',
      'null' => false,
      'default' => 0,
    ),
    'encrypted' => 
    array (
      'dbtype' => 'tinyint',
      'precision' => '1',
      'phptype' => 'boolean',
      'null' => false,
      'default' => 0,
    ),
    'encryption_type' => 
    array (
      'dbtype' => 'int',
      'precision' => '2',
      'phptype' => 'integer',
      'null' => false,
      'default' => 1,
    ),
    'hash' => 
    array (
      'dbtype' => 'varchar',
      'precision' => '255',
      'phptype' => 'string',
      'null' => false,
      'default' => '',
    ),
   
    'images' => 
    array (
      'dbtype' => 'varchar',
      'precision' => '255',
      'phptype' => 'string',
      'null' => false,
      'default' => '',
    ),
  ),
);
Что еще нужно сделать?) или это вообще не правильно?)
perfkirill
10 декабря 2020, 16:17
modx.pro
811
0

Комментарии: 10

Наумов Алексей
10 декабря 2020, 17:16
0
При следующем обновлении компонента все это затрется.
    perfkirill
    10 декабря 2020, 17:34
    0
    Я знаю,

    но так тоже не работает

    <?php
    switch ($modx->event->name) {
    
    	case 'OnMODXInit':
    		$modx->loadClass('FormItForm');
    	$modx->map['FormItForm']['fields']['images'] = '';
    	$modx->map['FormItForm']['fieldMeta']['images'] = array(
    			'dbtype' => 'varchar',
    			'precision' => 255,
    			'attributes' => 'unsigned',
    			'phptype' => 'string',
    			'null' => false,
    			'default' => '',
    		);
    		break;
    }
    Ошибка /core/xpdo/xpdo.class.php: 644) Could not load class: FormItForm from mysql.formitform.
      Роман
      09 августа 2021, 10:39
      0
      Тут просто нужно было дописать:
      $modx->addPackage('formit', $modx->getOption('core_path').'components/formit/model/');
    Alexey
    10 декабря 2020, 17:39
    0
    Помимо предыдущего справедливого замечания: а хук есть? Который сохранит загруженный в форму файл на сервер и добавит путь к файлу в новое поле?
      perfkirill
      10 декабря 2020, 17:41
      0
      Естественно)) Да мне просто интересно как это вообще работает. Это не проект. Сижу уже часов 7 над этим, интересно)
      Наумов Алексей
      10 декабря 2020, 17:45
      0
      В $xpdo_meta_map['FormItForm'] есть поле fields, как минимум туда image забыли добавить.
        perfkirill
        10 декабря 2020, 17:50
        0
        Подскажите где это?
          perfkirill
          10 декабря 2020, 17:53
          0
          metadata.mysql.php

          А разве он не возьмет схему, которую я поправил?
            Наумов Алексей
            10 декабря 2020, 17:54
            +1
            В файле в formitform.map.inc.php, вы там изменения вносили, но в одном месте не дописали.
              perfkirill
              10 декабря 2020, 17:58
              0
              Да, точно, заработало))) Спасибо, в первый раз мне тут реально помогли)
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        10