создание секции tickets через процессоры
Интересует создание секции tickets через процессоры.
Нашел статью о процессорах в MODX — хочу применить на практике.
Пробую следующее
Я немного в тупике. Пните меня прошу!)
Нашел статью о процессорах в MODX — хочу применить на практике.
Пробую следующее
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
// Массив, который мы передадим в процессор, там его ловить в $scriptProperties
$processorProps = array(
);
// Массив опций для метода runProcessor
$otherProps = array(
// Здесь указываем где лежат наши процессоры
'processors_path' => $modx->getOption('core_path') . 'components/tickets/processors/'
);
// Запускаем
$response = $modx->runProcessor('mgr/section/create.class', $processorProps, $otherProps);
// Если ошибка
if ($response->isError()) {
$modx->log(modX::LOG_LEVEL_ERROR, 'my error:' .$response->getMessage());
}
// И возвращаем ответ от процессора
return $response->response;
ну и в итоге мне показывает большую и жирную фигу…Fatal error: Cannot redeclare class TicketsSectionCreateProcessor in /var/www/reg33/www/core/components/tickets/processors/mgr/section/create.class.php on line 0
Cannot redeclare class — гугл подсказал что сие есть — не могу переопределить классЯ немного в тупике. Пните меня прошу!)
Поблагодарить автора
Отправить деньги
Комментарии: 10
Нужно обращаться к родному процессору MODX с указанием class_key — он сам вызовет нужный процессор для этого класса и всё сделает.
Это особенность всех CRC, в том числе и ресурсов Tickets и miniShop2.
$processorProps = array(
'class_key' => 'TicketsSection',
'template' => 15,
'alias' => 'myTicket',
'parent' => 0,
);
$otherProps = array();
$response = $modx->runProcessor('resource/create', $processorProps, $otherProps);
if ($response->isError()) {
$modx->log(modX::LOG_LEVEL_ERROR, 'my error:' .$response->getMessage());
}
Это особенность всех CRC, в том числе и ресурсов Tickets и miniShop2.
c админки все нормал, код отрабатывает.
Но если с фронта то не хватает прав — permission_denied
Пробую следующее:
создал mycreate.class.php
Но если с фронта то не хватает прав — permission_denied
Пробую следующее:
создал mycreate.class.php
<?php
// Подгружаем класс системного процессора, отвечающего за создание ресурсов
require_once MODX_CORE_PATH.'components/tickets/processors/mgr/section/create.class.php';
// Создаем свой новый класс, расширяющий TicketsSectionCreate
class myTicketsSectionCreateProcessor extends TicketsSectionCreateProcessor{
public $permission = 'new_document';
public $contextKey = 'web';
}
return 'myTicketsSectionCreateProcessor';
вызов так// Массив, который мы передадим в процессор, там его ловить в $scriptProperties
$processorProps = array(
'class_key' => 'TicketsSection',
'template' => 15,
'alias' => 'myTicket',
'parent' => 0,
'context_key' => 'web',
);
// Массив опций для метода runProcessor
$otherProps = array(
// Здесь указываем где лежат наши процессоры
'processors_path' => $modx->getOption('core_path') . 'components/tickets/processors/mgr/my/'
);
$response = $modx->runProcessor('mycreate', $processorProps, $otherProps);
if ($response->isError()) {
$modx->log(modX::LOG_LEVEL_ERROR, 'my error:' .$response->getMessage());
}
return $response->response;
что не так делаю? или как можно обойти проверку прав для создания секции с фронта?
наверно я туплю… нужно скорее всего дать группе пользователей право на создание ресурса да?
или это неправильно?
или это неправильно?
дал группе юзеров право на создание ресурса — заработало…
Как правильнее? Иметь группу пользователей с таким правом или иметь группу пользователей без права на создание, и как то обойти проверку прав на создание ресурса?
Как правильнее? Иметь группу пользователей с таким правом или иметь группу пользователей без права на создание, и как то обойти проверку прав на создание ресурса?
Можно попробовать наследовать modResourceCreateProcessor и либо переопределить переменную $permissions, вот так:
public $permission = '';
либо переопределить метод checkPermissions, чтобы он всегда возвращал truepublic function checkPermissions() {
return true;
}
Меня тоже интересует этот вопрос. Есть решение?
Василий, классно придумал с блоком «Здесь упомянуты»
Это не я придумал, а Виталий Дощенко — директор Simple Dream =)
Получилось прикольно, да.
Если кто-то еще проявит интерес — могу выложить исходный код и открыть интерфейс магазина для запросов.
Получилось прикольно, да.
Если кто-то еще проявит интерес — могу выложить исходный код и открыть интерфейс магазина для запросов.
А реализовал ты?
Конечно.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.