ПредишенСледващото

Не сме имали нови уроци. Започваме нова серия от експерименти, сега вече е свързан с допълнителни съоръжения на MODx. Той често се използва, особено ако искате да съхранявате в базата данни някои допълнителни информационни данни. Например, магазини пренасочване съставни всички пренасочвания в отделна таблица. И ние се научат да правят същото)

Ако искате да съхраните допълнителна информация в допълнителната таблица, трябва да създадете свой добавка. В добавка, наречена MODx компоненти или пакети.

Ще започнем с един прост:

Сайтът има страница с карта на България. На тази карта, е необходимо да се оттегли на етикета в градовете, където има клонове на нашата организация. Карта, за да направите снимка, етикети са абсолютно позиционирани. Всичко друго, но организацията се развива с бързи темпове, винаги има нови клонове, и би било добре да се опрости добавянето на етикети върху картата.

Предполагаме, че вече сте инсталирали MODx))) Сложете добавянето Console. по-добре да експериментирате и да CMPGenerator. което ще ни каже повече за нашата MODX'u маса.

Координати етикети ще се съхраняват в отделна таблица, така че отиват в PhpMyAdmin и да се създаде нова таблица modx_map_item със следните полета:

  • ID - INT (10), auto_increment
  • заглавие - VARCHAR (250), utf8_general_ci, NULL - да Default - NULL
  • coord_x - INT (10), NULL - да Default - NULL
  • coord_y - INT (10), NULL - да Default - NULL

След това отиваме в администраторския панел, Components-> CMPGenerator. Кликнете върху Създаване на пакет. Попълнете полетата: Име на пакета - Карта Име на базата данни - оставете празно (или напишете името на вашата база данни) Маси - modx_map_item префикс - modx_ Build Schema - Да се ​​изгради пакет - Да

и спаси. Всички модели се генерира, всички данни на нашата трапеза в MODX'a там. Можете да погледнете в папката / ядро ​​/ компоненти / карта /

Open Komponety-> Конзола и се опитват да се създаде обект: Опа:

не можа да се зареди клас: MapItem от mysql.mapitem.
Фатална грешка: Покана за член функция спасяване () на различен от обект в / Начало /. /public_html/core/components/console/processors/exec.class.php(19). Оценка () "г код на ред 3

Данните от MODX'a-, че е така, но той не знае, че те имат един))

Отиди на конфигурацията на системата и създаване на нов параметър (ако все още не е) extension_packages. Попълнете само "ключ" (extension_packages) и "стойност":

Ако сте в тази опция е написано нещо, което трябва да добавите този код до края на запетайка, така:

в противен случай се прекъсне други компоненти)))

Можете да го направите, без ръце, и да даде право на MODX'u. За да направите това в конзолата да изпълнява следния код, както и настройките на системата ще бъдат регистрирани правилно.

Сега ние се опитваме да създадем обект отново. Не е грешка. Отиваме в PhpMyAdmin и да видим, че има нов ред. Поздравления, вече можете да работят с новия обект, използвайки xPDO, както и други предмети MODx.

← Част 5. Създаване и изтриване на обекти

Добавяне, редактиране и изтриване на потребителски. →

Създаване на вашата маса е просто перфектно за решаване на проблема ми. Но когато съм създал няколко таблици в базата данни: «modx_order_item» и «modex_product_item», тъй като описва като «Поръчка» и «продукта» съответно с префикс «modx_», а накрая добавете пътя към него в extension_packages, гледах обекта име в схема: в идеята е да се направи всичко правилно, но когато се опитате да извършите
Взима грешка:
«Не може да се зареди клас: ProductItem от mysql.productitem.»
версия modeksa «MODx Revolution 2.2.12-п-л»
Как мога да убедя MODx вземат своите таблици?

Благодаря за статията!
Установено е, че пакетите поколение компонент CMPGenerator представка за таблиците на различни от "modx_", не работи: получава данни от базата данни и не се запазва.
xPDO така или иначе използва префикс "modx_".

Това е, например, имам маса mecha_robot_makers, аз Wizard (в CMPGenerator) се вписва името на маса и префикс mecha_robot_makers mecha_. Фрагментът проверява името, използвано в таблицата с клас:

$ MyRow = $ modx-> newObject ( "RobotMakers");
ехо $ myRow -> _ маса;

и на "modx_robot_makers" й на показване.

Може би разбрал смисъла на префикса или факта, че тя трябва да бъде въведен в областта при генериране на пакета.
Преименувам масата (направени modx_ префикс), и тя работи.

Какво грешка с префикс СМР Generatore

Името на маса трябва да бъде една и съща представка, както и във всички други таблици. Например, ако всички таблици в базата данни, за да започне modx_. и на тази таблица трябва nachinatsya на modx_. Необходима е Представката, доколкото разбирам, ако редица потребителски таблици. но след префикса трябва да modx_fgrx_

Ето още един бъг. Първо направи префикс fgrx тогава забелязах, и да се промени по fgrx_

В първия случай, просто промени името на таблицата на fgrx_map_item, но това не е правилно. Тя трябва да е някъде в промените настройките. Настройките на генератор да се върнат към fgrx, няма промяна, същата грешка с двойно подчертаване.
joxi.ru/j1A59nQu8991AE
Името на таблицата е нормално, когато се прави "долна черта" излишни.

Добър ден, Иля! За съжаление, за да вземете една стара тема.
Аз се опитвам да ги повтаряте инструкции, създайте таблица, направете пакет в CMPGenerator. Схемата е направено, се появява в папката. След това, в конзолата направи $ modx-> addPackage ( "Карта", $ modx-> getOption ( "core_path") "компоненти / Карта / модел / ',' modx_map_".);

Но когато се опитам да се обадя елемента от $ = $ modx-> newObject ( "MapItem ');
$ Item-> Save (); в конзолата, можете да получите
не можа да се зареди клас: MapItem от mysql.mapitem.

Аз правя нещо нередно, или по време на това писание, че нещо се е променило?

Подобно, нищо не се е променило ... Трудно е да се разбере какво ... Необходимо е грешка, за да отворите папката, създадена, просто проверете начина, обърнете внимание - когато главната буква, където с малки букви. По принцип това mysql.mapitem файла - е нужна тя? В него като обект, наречен? По-вероятно е, че не се направи в modx_ префикс база данни. След това е необходимо да се уточни в addPackage. Причините могат да бъдат настроени

Иля, добър вечер. Благодаря ви много за вашите статии. Това е втората ми ден страдам с см генератор. Създавам в PhpMyAdmin знак на Вашите указания по-горе. Пускам генератора. Папка, и по целия път Карта създаден. И тогава не чакай не Е. Един обект не е изготвен. Трупите пише:
===
(ERROR @ /papka/assets/components/cmpgenerator/connector.php) схема /home/u111/site.ru/www/papka/core/components/Map/model/Map/Map.mysql.schema.xml не съдържа валидна възражение елементи.
===
Къде да се копае, какви са причините за това? Помогнете, моля ви. Бих искала да отбележа, че site.ru/www/papka така. MODx инсталиран в поддиректория papka. И на файловете на сайта (други) се намират в site.ru/www папка.
Благодаря.

Извинявам се за безхаберието. Беше необходимо да се определи масата по целия път! MODX_map_item. Въпреки това, което е написано по-долу MODx префикс. Благодаря ви отново. Аз напред.

Иля, здравей, много добър Wikipedia теб, прочети повече да дойде, но аз съм в процес)). които не могат да се сблъскат с задачата за решаване на всичко намерено в мрежата (може да изглеждат зле, или просто не отиват да копаят) ... същността на проблема е - имам нужда да се синхронизира 2 различен уебсайт MODx Revo (по-специално, че е необходимо да се синхронизира двата имота в стоките, които се използват при променя настройките на едно място, те промениха и по другите сайтове), както за работниците, ... може да предложи макар и в каква посока да се копае, аз ще бъда много благодарен

Е, на теория, не е необходимо да се съхранява каталога и в двете бази - трябва да бъде на основната площадка, с директорията, да създадем нова страница, която показва всички стоки, като JSON. Втора указател сайт, за да напише заключението, сами по себе си - с данните за искане от първия сайт, декодиране JSON и дизайн в зависимост от дизайна.

Но ако вече сте направили две директории трябва да напишете такава, че при запазване на стоката ще изпраща заявка към друг сайт и друг сайт, трябва да се отговори на това искане - да се променят съответните полета. Тя е по-трудно, тъй като все повече и трябва да се мисли за безопасността, че е невъзможно да се друг сайт или ръчно да изпрати такова искане и всички сайтове се счупят.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!