Зачем нужен action.php в компонентах?

Всем привет!

Напомните, пожалуйста, зачем нужен action.php для обработки ajax-запросов в компонентах?

Т.е. я понимаю, что некоторые компоненты врубают MODX_API_MODE, чтобы modx не запускал системный обработчик запросов (который будет проверять статус сайта, загружать необходимый ресурс, отдавать соответствующие ошибки и вот это вот всё), и можно было бы просто обработать запрос и отдать какой-то результат (закрыв сессию).

Но разве нельзя добиться того же результата, просто поместив свой код в плагин на OnHandleRequest, в конце которого точно так же написать
@session_write_close();
exit($result);
?
Или что-то может пойти не так?

Единственной разницей будет то, что перед вызовом этого плагина запрос успеет пройти через sanitizeRequest, который вырежет все теги script, modx-теги и цифровые html-сущности из массивов $_GET, $_POST, $_COOKIE, $_REQUEST в соответствии с системными настройками.

Но разве это критично? Это же всё-таки системная валидация запроса, чтобы лишнего не проскочило, зачем её обходить в компонентах?

Есть ещё вариант (похожий на правду), чтобы обработку запроса не перехватил какой-нибудь другой плагин и не отдал ответ раньше. Но ведь это решается ms2_action, af_action, gl_action и т.п. Разве нет?

p.s. При этом, кстати, miniShop2 у себя в action.php MODX_API_MODE не включает, а просто напрямую подключает корневой index.php, из которого обработка запроса попадает в плагин на OnHandleRequest, который делает как раз то, о чём я и говорю. Зачем тогда action.php?) Где собака зарыта?)
Алексей Карташов
23 октября 2017, 11:56
modx.pro
1
1 505
0

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0