Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 147 комментариев

Олег Трубин
Олег Трубин
Я тоже так думаю), ибо тикеты используются достаточно давно и такой косяк пофиксили бы уже.

Но вчера долго и безуспешно искал что именно я мог сломать — твой код в тикетах не трогал. А время жмёт, в итоге вот такой костыль.

Если в дальнейшем всплывёт, что я сделал не так обязательно напишу.
Dimka Suvorov
Dimka Suvorov
Я уже все обыскал, найти пути решения не получилось, именно поэтому я обратился сюда.
178.121.206.36 - - [15/Oct/2013:10:44:07 +0400] "POST /77stroy/assets/components/minishop2/action.php HTTP/1.0" 500 0 "http://menshov.pro/77stroy/korzina.html" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"
Воеводский Михаил
Воеводский Михаил
Суть проста — если ты работаешь напрямую через апи, то должен знать, что делаешь и для чего. В том числе, обновлять кэш и многое другое. Если хочешь, чтобы при выполнении каких-либо действий система сама за тебя выполняла все сопутствующее, то используй процессоры.

АПИ, в общем-то, лишь набор методов, из которых разработчик собирает конструктор. Это относится не только к MODX.
Serge Kosykh
Serge Kosykh
Если кратко — прямым обновлением записи и/или ее TV, не через процессоры.
Подробнее — так: форма — ajax submit (через iQuery) — дергаю документ, в котором сниппет пишет инфу в БД в таком стиле:
if( $doc = $modx->getObject('modResource', 'id=' . $doc_id) ){
    //родные поля документа не обновляются, только TV
    $doc->setTVValue('sity_name', strip_tags($_POST['sity_name']));
    //$doc->save() не делаю, т.к. не обновляю основные поля документа;
    //но даже когда его делал - все равно кэш не обновлялся;
    //более того, когда обновляю и "родные" поля дока, и его TV - все равно кэш остается прежним
    //и это - при отсутствии акселераторов и кэшеров на уровне сервера http
};
Да, понимаю, что TV — не «родные» поля, и хранятся они отдельно и обрабатываются отдельно. Но коли они логически к документу привязаны (ведь мы вызываем метод setTVValue() у конкретного объекта, а значит обработать кэш этого дока, теоретически, можем), почему бы и при их обновлении не генерить соотв. эвент и не обрабатывать его уже внутри core? Может, опять же, я чего-то не понимаю? Меня сама идеология интересует; если это не баг, а фича — то как это можно объяснить?