Ошибка в запросе БД. Помогите пожалуйста!

InstantCMS 2.X
#1 18 декабря 2018 в 03:36
При попытки сохранить объявление в типе контента «board», появляется ошибка. При чем, ошибка появляется только, если загружать изображения, если нет, то все нормально.
Пишет, что не существует таблицы _con_add_fields, но такой таблицы и не должно быть… вроде.


Ошибка в запросе БД:

Таблица 'САЙТ_apsny_con_add_fields' не существует
SELECT i.*
FROM apsny_con_add_fields i
LIMIT 1000

Последние вызовы:

cmsModel->get() @ /system/controllers/languages/hooks/content_before_add.php: 15
onLanguagesContentBeforeAdd->run()
call_user_func_array() @ /system/core/controller.php: 650
cmsController->runExternalHook() @ /system/core/controller.php: 609
cmsController->runHook() @ /system/core/eventsmanager.php: 46
cmsEventsManager::hook() @ /system/controllers/content/actions/item_add.php: 279
actionContentItemAdd->run()
call_user_func_array() @ /system/core/controller.php: 514
cmsController->runExternalAction() @ /system/core/controller.php: 425
cmsController->runAction() @ /system/controllers/content/frontend.php: 22
content->route()
#2 18 декабря 2018 в 06:09
В "Админка-Компоненты-Управление событиями" отключите хук content_before_add у компонента languages (Языки). Вероятно проблема в нем или в него передаются неверные данные.
#3 18 декабря 2018 в 13:37


В "Админка-Компоненты-Управление событиями" отключите хук content_before_add у компонента languages (Языки). Вероятно проблема в нем или в него передаются неверные данные.

Loadырь
Да, проблема связана с компонентом "Языки", благодарю за подсказку.
Буду консультироваться с разработчиком.
#4 18 декабря 2018 в 18:27

Да, проблема связана с компонентом "Языки", благодарю за подсказку.

Проблема связана с компонентом доски объявлений, и никак не связана с компонентом Языки. Почему этот чудесный компонент меняет параметры ядра на свои и не возвращает их обратно надо спросить у его автора(кстати я уже спрашивал и ответ был примерно "ну мапс тоже так косячит, а делал как в мапсе"). В типах контента значение $core->uri_action должно содержать название типа контента, а не экшен самописного компонента. Хотя очевидно так считают далеко не все.
#5 18 декабря 2018 в 18:29
Да, забыл сказать — речь идет об этом компоненте доски.
#6 18 декабря 2018 в 18:55
На сколько это плохо и что делать?
#7 18 декабря 2018 в 18:56

ну мапс тоже так косячит, а делал как в мапсе

dwd
Ну во первых, я не назвал это косяком. Я считаю это переопределение роутера.
Во вторых, о какой изменение ядра идет речь, не могу понять. Какой системы файл меняет компонент?
В третьих, как было сказано в пункте 2, компонент не меняет ядро, поэтому я имею права делать всё что захочу, внутри своего контроллера.

Жаль такой уважаемый программист опускается до уровня шэльдэ, приведя цитаты, которых я не говорил.
К тому же, я пошел на встречу и предлагал вернуть $core->uri_action = 'board', в ответ получил слова типа "Какой у меня крутой продукт, у остальных одни костыли", после чего как то пропала желание вести диалог.

и никак не связана с компонентом Языки.

dwd
Интересно если отключить компонент Языки или хук этого компонента, как написал Loadырь, проблема не исчезнет?
Почему же тогда ошибка показывает именно на компонент Языки
#8 18 декабря 2018 в 19:01

На сколько это плохо и что делать ?

@elv
Нечего не делать.
Что бы расширить типов контента, надо переопределить роутер, согласно коду r2.
Но dwd в место того что бы менять свой код, просит менять всех остальных, у кого имя компонента совпадает с типом контента, считая это костылем.
Хотя насколько я могу судить, компонент Языки меняет очень много системных файлов, не это ли костыль?
#9 18 декабря 2018 в 19:04
Тише коллеги, есть же простое решение данной проблемы. Достаточно переместить хук content_before_add компонента "Языки" выше компонента "Расширенная доска" (или как он правильно называется) и сохранить порядок событий.
#10 18 декабря 2018 в 19:22

Но dwd в место того что бы менять свой код, просит менять всех остальных, у кого имя компонента совпадает с типом контента, считая это костылем.

Evanescence
"Языки" не установлен, картинки сохраняет, content_before_add нет — буду делать ничего.
#11 18 декабря 2018 в 19:28

Достаточно переместить хук content_before_add компонента "Языки" выше

Loadырь
Всё намного проще, если сделать dump() массива который передается в content_before_add.php получаем

Не только имя типа контента, но и id и вся информация
#12 18 декабря 2018 в 19:31
Evanescence, тип контента это часть контроллера content и должен вести себя как определено этим контроллером вне зависимости от того, что вы к нему дописываете. Это мое личное мнение, вы можете быть с ним не согласны. Изменяя поведение системного контроллера вы создаете конфликтоопасные ситауции, одну из которых мы наблюдаем в данном случае. Тем более, что это не связано с какими-либо трудностями, достаточно просто вернуть параметр uri_action на место после того как переопределили контроллер.

Жаль такой уважаемый программист опускается до уровня шэльдэ, приведя цитаты, которых я не говорил. К тому же, я пошел на встречу и предлагал вернуть $core->uri_action = 'board', в ответ получил слова типа "Какой у меня крутой продукт, у остальных одни костыли", после чего как то пропала желание вести диалог.

Я не храню переписку чтобы процитировать вам ваше "Я спрашивал у Fuze как реализовать перенаправление и это его код". где вы киваете на "отца системы" и безупречность его кода. Но разговор имел место быть и данный момент вы решили все оставить без исправлений. Ну а зачем исправлять? Компонент доски то от этого не косячит, все ровненько. Это на других потом можно будет кивать какие они рукожопы.

И дискуссий на эту тему у меня желания вести тоже нет, для этого есть более приятные темы. Но в отличии от вас я привык не возмущаться на критику а исправлять свои косяки даже если они никому не мешают, а уж тем более если меня об этом просят.
#13 18 декабря 2018 в 19:37

Всё намного проще, если сделать dump() массива который передается в content_before_add.php получаем

Да. спасибо, вы мне открыли еще один способ опредения типа контента при добавлении записи. Только
1. это не отменяет неверных параметров ядра в типе контента
2. Мы с вами общались на эту тему до того, как массив записи стал содержать данные о типе контента(ctype_data)
#14 18 декабря 2018 в 19:45

процитировать вам ваше "Я спрашивал у Fuze как реализовать перенаправление и это его код"

dwd
А можно посмотреть где я такого сказал?
Я то уж точно помню что код получал от r2 а не от Fuze.

и данный момент вы решили все оставить без исправлений.

dwd
Я тоже удивлен почему Вы не берете имя типа контента из массива этого файла, а просите других корректировать код под ваш компонент.
Иллюстрация

в отличии от вас я привык не возмущаться на критику

dwd
Какая критика?)
Вы перекладываете вину своего компонента на чужой.
Вы привели цитату где я якобы назвал мапс косяком. Без доказательств.

Я не возмущаюсь, а просто требую что Вы говорили правду и признали что ошибка возникает в вашем компоненте.
#15 18 декабря 2018 в 20:05

Я не возмущаюсь, а просто требую что Вы говорили правду и признали что ошибка возникает в вашем компоненте.

Конструктив прошел мимо, вместо него пошли требования. А жаль… Ну что ж, давайте я вам подыграю. Итак, требуемая вами правда:

Это я своими кривыми руками написал кривой компонент который не хочет работать с вашей великолепной доской объявлений. Каюсь и обязуюсь впредь учитывать все все изменения, которые вы будете осуществлять в системе при написании своих компонентов. И если завтра вам взбредет в голову в какую-то переменную засунуть 10-ю главу книги "Война и мир", я обязательно должен буду проверить это перед тем как использовать эту переменную в своем коде.

на этом тему можно закрыть)))
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.