Создание тикетов через процессор с frontend
Создаю тикеты через процессор, с залогиниваем в web, не создаются tv поля.
А если через mgr то все ок.
На группе пользователей стоит TicketUserPolicy.
Каким образом можно дать разрешения этой группе (users) заполнять tv поля?
А если через mgr то все ок.
На группе пользователей стоит TicketUserPolicy.
Каким образом можно дать разрешения этой группе (users) заполнять tv поля?
$modx->initialize('web');
$params = array(
'class_key' => 'Ticket',
'pagetitle' => 'test'+time(),
'context_key' => 'web',
'createdby' => $modx->user->id,
'content' => 'content',
'template' => 6,
'parent' => 2,
'published' => 1,
'show_in_tree' => 0,
'tvs' => true
);
// массив tv полей
$tvs = array();
foreach ($_POST as $key => $value){
if(substr($key, 0, 2) == 'tv') $tvs[$key] = $value;
}
// склеивание
$fields = array_merge($params, $tvs);
// создание ресурса
$response = $modx->runProcessor('resource/create', $fields);
$object = $response->getObject();
Комментарии: 2
Неужели нет решений?..
Решение не через процессор
function set_tvs($resource) {
global $modx;
$tvs = array();
foreach ($_POST as $key => $value){
if(substr($key, 0, 2) == 'tv'){
$id = explode('tv', $key);
if(is_array($value)) $value = implode('||', $value);
$tvs[$id[1]] = $value;
}
}
foreach ($tvs as $key => $value){
$tv = $modx->getObject('modTemplateVar', $key);
$tv->setValue($resource, $value);
$tv->save();
}
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.