modX.runProcessor
Последнее обновление not available | История страницы | Улучшить эту страницу | Сообщить о проблеме
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
Budget
$204 per month—let's make that $500!
Learn moremodX::runProcessor¶
Загружает и запускает указанный процессор. В этом контексте процессор это экземпляр класса \MODX\Revolution\Processors\Processor, который можно загрузить по логике, описанной ниже.
MODX также использует этот метод для запросов, которые обрабатывает connector.
ProcessorResponse|mixed runProcessor(string $action = '', array $scriptProperties = array(), array $options = array())
Метод принимает 3 аргумента:
-
string $action: действие, то есть какой процессор запустить. Это может быть полное имя класса процессора (например,\MODX\Revolution\Processors\Resource\Create), относительный путь в стиле 2.x (resource/create) или относительный квалифицированный путь (Resource\Create). Подробнее о том, как$actionпреобразуется в конкретный процессор, см. раздел Логика загрузки процессора ниже. -
array $scriptProperties: массив свойств, передаваемых процессору. На работуmodX::runProcessorэто не влияет. Эти свойства использует сам процессор. -
array $options: опции, которыеmodX::runProcessorприменяет при обработке запроса. Поддерживается только:-
processors_path: переопределяет путь по умолчанию для поиска процессора. Если указано, MODX ищет процессоры не в стандартном каталоге. В основном это нужно сторонним дополнениям с собственным connector и пользовательскими процессорами.
-
Логика загрузки процессора¶
Начиная с 3.0, modX::runProcessor выполняет следующие шаги в указанном порядке, чтобы найти класс процессора для выполнения. После совпадения он запускает процессор и прекращает поиск.
Во всех случаях проверяется, что найденный класс реализует \MODX\Revolution\Processors\Processor.
- Проверяется, является ли переданный
$actionдопустимым полным именем класса, который можно создать напрямую. Можно передать полное имя класса процессора, если оно загружено или доступно через autoload. Например,\MODX\Revolution\Processors\Resource\Createподхватывается autoload и его можно передать как$action. -
$actionпреобразуется в имя класса в пространстве имён\MODX\Revolution\Processors\. Для этого строка делится по слэшу (/), первая буква каждой части приводится к верхнему регистру, части соединяются обратным слэшем (\). Если в сгенерированном пути есть\Tv\, он заменяется на\TemplateVar\, потому что в 3.0 этот путь переименовали. Например, при$actionравномresource/createполучаетсяResource\Create, а с корневым пространством имён класс\MODX\Revolution\Processors\Resource\Create. - MODX начинает сканировать файлы. По умолчанию он ищет в
core/src/Revolution/Processors/файл{$action}.class.php. Например, для$actionsomething/coolпуть будетcore/src/Revolution/Processors/something/cool.class.php. Это удобно для сторонних процессоров, если передать$options['processors_path']с пользовательским корневым каталогом. Например,['processors_path' => '/absolute/path/to/core/components/doodles/processors/']даёт поиск по/absolute/path/to/core/components/doodles/processors/something/cool.class.php. - Когда файл найден в ожидаемом месте, он подключается.
a. Если подключение файла возвращает строку, эта строка считается именем класса.
b. Если файл ничего не возвращает,
$actionпреобразуется в стандартное имя файла процессора. Строка делится по слэшу, из каждой части удаляются точки, подчёркивания и дефисы (._-). Первая буква каждой части приводится к верхнему регистру. К результату добавляется префиксmodи суффиксProcessor. Например,my/custom/actionпревращается вmodMyCustomActionProcessor.
Пример¶
Запуск процессора создания ResourceGroup:
// create new resource group programatically
$response = $modx->runProcessor('security/resourcegroup/create', array(
'name' => 'Test', // the name of the new resource group
'access_contexts' => 'mgr,web', // the context(s) the new resource group is restricting access in
'access_admin' => 1, // adds access to this resource group for Administrators
'access_parallel' => 1, // creates a new user group "Test" parallel to the resource group
'access_usergroups' => 'Editors', // adds access to the new resource group for the user group "Editors"
));
Разные процессоры требуют разные параметры. Смотрите документацию или исходный код нужного процессора.
Смотрите также¶
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
Budget
$204 per month—let's make that $500!
Learn more










