在Drupal中以编程方式插入多个节点时的日期错误

时间:2010-10-01 03:13:35

标签: php drupal datetime drupal-6 drupal-modules

我正在构建一个Drupal模块,当创建类型为'team_match'的节点时,该模块会创建多个类型为'individual_match'的节点。 team_match是相关个人匹配的集合。

我使用Advomatic上解释的方法,我在旧的Stack Overflow帖子中找到了该方法。它工作得很好(意味着它创建了节点)但它返回了许多错误消息,所有这些都与空日期有关。

以下是hook_nodeapi函数的相关代码:

    case 'insert':
      // insert individual matches when a team match is created
      if($node->type == 'team_match') {
        // Create node of type 'individual_match'
        // will be a loop, once date errors are sorted out
        $form_state = array();
        $tmp_node = new stdClass(); 
        $tmp_node->type = 'individual_match';
        // create form for new node
        $form_state['values']['type'] = $tmp_node->type;
        $form_state['values']['status'] = 1;
        $form_state['values']['title'] = $node->title;
        $form_state['values']['uid'] = $node->uid;
        $form_state['values']['name'] = $node->name;
        $form_state['values']['op'] = t('Save');  // This seems to be a required value.
        // Create the content.
        drupal_execute($tmp_node->type.'_node_form', $form_state,  &$tmp_node);
      }
    break;

以下是错误消息:

  • 警告:date_offset_get()要求参数1为DateTime,在第491行/var/www/vhosts/example.com/httpdocs/sites/all/modules/date/date/date_elements.inc中给出null。
  • 警告:date_format()要求参数1为DateTime,在第494行/var/www/vhosts/example.com/httpdocs/sites/all/modules/date/date/date_elements.inc中给出null。
  • 警告:date_format()要求参数1为DateTime,在第495行/var/www/vhosts/example.com/httpdocs/sites/all/modules/date/date/date_elements.inc中给出null。
  • 警告:date_offset_get()要求参数1为DateTime,在第497行/var/www/vhosts/example.com/httpdocs/sites/all/modules/date/date/date_elements.inc中给出null。
  • 警告:date_timezone_set()要求参数1为DateTime,在第498行/var/www/vhosts/example.com/httpdocs/sites/all/modules/date/date/date_elements.inc中给出null。
  • 警告:date_timezone_set()要求参数1为DateTime,在第499行的/var/www/vhosts/example.com/httpdocs/sites/all/modules/date/date/date_elements.inc中给出null。
  • 警告:date_format()要求参数1为DateTime,在第500行的/var/www/vhosts/example.com/httpdocs/sites/all/modules/date/date/date_elements.inc中给出null。
  • 警告:date_format()要求参数1为DateTime,在第501行/var/www/vhosts/example.com/httpdocs/sites/all/modules/date/date/date_elements.inc中给出null。
  • 警告:date_timezone_set()要求参数1为DateTime,在第509行/var/www/vhosts/example.com/httpdocs/sites/all/modules/date/date/date_elements.inc中给出null。
  • 警告:date_timezone_set()要求参数1为DateTime,在第510行/var/www/vhosts/example.com/httpdocs/sites/all/modules/date/date/date_elements.inc中给出null。
  • 警告:date_format()要求参数1为DateTime,在第511行/var/www/vhosts/example.com/httpdocs/sites/all/modules/date/date/date_elements.inc中给出null。
  • 警告:date_format()要求参数1为DateTime,在第514行/var/www/vhosts/example.com/httpdocs/sites/all/modules/date/date/date_elements.inc中给出null。

1 个答案:

答案 0 :(得分:2)

这被证明是'individual_match'内容类型上必需的CCK日期时间字段。在功能中设置它,或者不需要它,解决了这个问题。