Создание тикетов через процессор с frontend

Создаю тикеты через процессор, с залогиниваем в web, не создаются 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();
but1head
04 сентября 2015, 16:32
modx.pro
1
1 163
+1

Комментарии: 2

but1head
05 сентября 2015, 03:59
0
Неужели нет решений?..
    but1head
    05 сентября 2015, 04:56
    +1
    Решение не через процессор

    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();
    	}
    
    }
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2