Зачем нужен action.php в компонентах?
Всем привет!
Напомните, пожалуйста, зачем нужен action.php для обработки ajax-запросов в компонентах?
Т.е. я понимаю, что некоторые компоненты врубают MODX_API_MODE, чтобы modx не запускал системный обработчик запросов (который будет проверять статус сайта, загружать необходимый ресурс, отдавать соответствующие ошибки и вот это вот всё), и можно было бы просто обработать запрос и отдать какой-то результат (закрыв сессию).
Но разве нельзя добиться того же результата, просто поместив свой код в плагин на OnHandleRequest, в конце которого точно так же написать
Или что-то может пойти не так?
Единственной разницей будет то, что перед вызовом этого плагина запрос успеет пройти через 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?) Где собака зарыта?)
Напомните, пожалуйста, зачем нужен 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?) Где собака зарыта?)