2013-10-17 10 views
0

PHP 5.5를 사용하는 로컬 컴퓨터에서 Drupal 6을 실행 중이고 모듈을 통해 만들어진 컨텐트 유형의 노드를 추가하려고 할 때 지원되지 않는 피연산자 유형이 나타납니다.Drupal 6 지원되지 않는 피연산자 유형입니까?

commons.inc에서 찾을 수있는 function drupal_render에서 오류가 발생했습니다. 라인은 $elements += array('#title' => NULL, '#description' => NULL);입니다. var_dump을 수행했는데 어떤 이유로 요소가 배열 대신 true 인 부울을 발견했습니다. 나는 이유를 알 수 없다.

다음은보고있는 오류로 인해 잘못 키 입력 $ 양식 요소이다 형태

<?php 
// $ID$ 

function jokes_node_info(){ 
    return array(
     'jokes' => array(
      'name' => t('jokes'), 
      'module' => 'jokes', 
      'description' => t('Tell use your joke'), 
      'has_title' => true, 
      'title_label' => t('Title'), 
      'has_body', true, 
      'body_label' => t('jokes'), 
      'min_word_count' => 2, 
      'locked' => true 
     ) 
    ); 
} 


//only admin can create jokes 
function jokes_menu_alter(&$callback){ 
    if(!user_access('administer nodes')){ 
     $callback['node/add/jokes']['access callback'] = false; 
     unset($callback['node/add/jokes']['access arguments']); 
    } 
} 

//create permissions 
function jokes_perm(){ 
    return array(
     'create jokes', 
     'edit own jokes', 
     'edit any jokes', 
     'delete own jokes', 
     'delete any jokes' 
    ); 
} 

//control access 
function jokes_access($op, $node, $account){ 
    $is_author = $account->uid == $node->uid; 
    switch ($op) { 
     case 'create': 
      return user_access('create jokes', $account); 
     case 'edit': 
      return user_access('edit own jokes', $account) && $is_author || user_access('edit any jokes', $account); 
     case 'delete': 
      return user_access('delete own jokes', $account) && $is_author || user_access('delete any jokes', $account); 
     default: 
      break; 
    } 
} 

function jokes_form($node){ 
    $type = node_get_types('type', $node); 

    $form['title'] = array(
     '#type' => 'textfield', 
     '#title' => check_plain($type->title_label), 
     '#required' => true, 
     '#default_value' => $node->title, 
     '#weight' => -5, 
     '#maxlength' => 255 
    ); 
    $form['body_filter']['body'] = array(
     '#type' => 'textarea', 
     '#title' => check_plain($type->body_label), 
     '#default_value' => $node->body, 
     '#rows' => 7, 
     'required' => true 
    ); 
    $form['body_filter']['filter'] = filter_form($node->format); 
    $form['punchline'] = array(
     '#type' => 'textfield', 
     '#title' => t('Punchline'), 
     '#required' => true, 
     '#default_value' => isset($node->punchline) ? $node->punchline : '', 
     '#weight' => 5 
    ); 
    return $form; 
} 
?> 

답변

1

을 만들어 내 모듈 파일입니다. 모든 양식 요소는 키 이름 앞에 '#'문자가 있어야합니다. (Drupal이 '#'이없는 요소를 무시할만큼 똑똑하지 않은 이유는 무엇입니까?)

오류의 원인이되는 행은 'required' => true입니다. '#required' => true이어야합니다.

<?php 
    $form['body_filter']['body'] = array(
     '#type' => 'textarea', 
     '#title' => check_plain($type->body_label), 
     '#default_value' => $node->body, 
     '#rows' => 7, 
     '#required' => true 
    ); 
?>