2010-10-23 3 views
0

У меня есть тип контента как элемент списка todo. Он имеет некоторые поля cck, такие как крайний срок (в формате DateTime) и assign_user (поле ссылки пользователя). Я хочу использовать функцию drupal_execute создать такой узел программно, но после того, как полна ошибок, какЯ хочу вызвать drupal_execute() для полей cck (DateTime user_reference), но ничего не сохраняет в DB

предупреждение: call_user_func_array() [function.call-пользователем функ-массив]: Первый аргумент как ожидается, будет действительный обратный вызов, «views_access» был указан в ..includes/menu.inc в строке 454.

и создание узла, его значения cck равны NULL. это мой код

$form_state = array(); 
$form_state['values'] = array(
    'title' => $title, 
    'body' => $description, 
    'name' => $GLOBALS['user']->name, 
    'op' => t('Save'), 
    'field_deadline' => array(
       0=> array('value'=>array('month'=>1, 
          'day'=>1, 
          'year'=>2011, 
          'hour'=> 1, 
          'minute'=> 1 
          ))  
      ), 
    'field_notification_time' => array(
       0=> array('value'=>array('month'=>10, 
          'day'=>24, 
          'year'=>2010, 
          'hour'=> 0, 
          'minute'=> 24 
          ))  
      ), 
    'field_assign_user' => array(
       0=> array(
        'uid' => array('uid'=> 'user1') 
        ) 
      ), 
); 

$ узла = (объект) массив ( 'типа' => 'todo_element'); module_load_include ('inc', 'node', 'node.pages'); drupal_execute ('todo_element_node_form', $ form_state, $ node);

ответ

2

Вам не нужно использовать drupal_execute. Вы можете создать свой объект узла, как вы хотите, и на и вы вызываете:

$node = node_submit($node); 
node_save($node); 

узел сохранения затем позвонит CCK попросить правильно сохранить поле в БД.