Jump to main content Jump to doc navigation
Заметка: Действия были объявлены устаревшими в 2.3 и удалены в 3.x.

MODX использует ряд концепций для своего ядра и менеджера.

На стороне сервера вы найдёте Controllers, которые извлекают данные и регистрируют ассеты для страницы, и загружают (Smarty) шаблоны с голой разметкой. Сам интерфейс рендерится на клиенте, ExtJS в браузере — сервер отдаёт только шаблон и данные.

Контроллеры идентифицируются по комбинации пространства имён и действия, передаваемых в качестве параметров URL в менеджере. Если пространство имён не указано, предполагается core-пространство. Действие указывается в параметре URL a (на сервере читается через $_REQUEST).

Со стороны клиента запросы AJAX отправляются одному из нескольких Connectors, обычно /connectors/index.php. На основании action в этом запросе загружается соответствующий Processor, который выполняет фактическую загрузку/манипулирование данными.

Основные контроллеры и шаблоны находятся в /manager/, в то время как сторонние компоненты имеют их в своём каталоге пространства имён в core/components/.

Как action превращается в контроллер

При ?a=some/action&namespace=mycomponent менеджер ищет контроллер в таком порядке (modManagerResponse::getControllerClassName()):

  1. PSR-4 класс \MODX\Revolution\Controllers\Some\Action — если есть, файл не грузится; предпочтительный способ в 3.x, доступен и компонентам.
  2. Легаси-глобальный класс <Namespace><Action>ManagerController, например MycomponentSomeActionManagerController (пространство имён и действие режутся по /, каждая часть ucfirst).
  3. Файл controllers/some/action.class.php.
  4. Файл controllers/some/action/index.class.php.

Каталоги для файловых форм ищутся в таком порядке: каталог активной темы, default/ и корень пространства имён — каждый под controllers/. Если ничего не найдено, менеджер бросает исключение «не найдено». Права пункта меню (modMenu.permissions) проверяются до запуска контроллера — см. Меню.

Связанные страницы

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • JT Skaggs
  • deJaya
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$194 per month—let's make that $500!

Learn more