Php drupal 7警告:isset中的偏移量类型非法或元素_info()中为空
我写的代码中包含了一个名为user的核心模块,即角色函数。 我的用户类型类似于用户角色。如果您简要查看user.admin.inc文件,您将了解我已根据以下内容替换了函数和变量: 用户角色=用户类型 角色=类型 rid=ut\U id 名称=ut\U标签 我所做的一切都与Core所做的一样,但我在我的页面中有一个警告:警告:isset中的偏移量类型非法,或者element_info中的偏移量类型为空 我已经检查了每一行,但我找不到原因和方法,我可以消失它Php drupal 7警告:isset中的偏移量类型非法或元素_info()中为空,php,drupal-7,draggable,roles,Php,Drupal 7,Draggable,Roles,我写的代码中包含了一个名为user的核心模块,即角色函数。 我的用户类型类似于用户角色。如果您简要查看user.admin.inc文件,您将了解我已根据以下内容替换了函数和变量: 用户角色=用户类型 角色=类型 rid=ut\U id 名称=ut\U标签 我所做的一切都与Core所做的一样,但我在我的页面中有一个警告:警告:isset中的偏移量类型非法,或者element_info中的偏移量类型为空 我已经检查了每一行,但我找不到原因和方法,我可以消失它 `function user_admin
`function user_admin_types($form, $form_state) {
$types = user_types();
$form['types'] = array(
'#tree' => TRUE,
);
$order = 0;
foreach ($types as $ut_id => $ut_label) {
$form['types'][$ut_id]['#type'] = (object) array(
'ut_id' => $ut_id,
'ut_label' => $ut_label,
'ut_weight' => $order,
);
$form['types'][$ut_id]['#weight'] = $order;
$form['types'][$ut_id]['weight'] = array(
'#type' => 'textfield',
'#title' => t('Weight for @title', array('@title' => $ut_label)),
'#title_display' => 'invisible',
'#size' => 4,
'#default_value' => $order,
'#attributes' => array('class' => array('type-weight')),
);
$order++;
}
$form['ut_label'] = array(
'#type' => 'textfield',
'#title' => t('User Type'),
'#title_display' => 'invisible',
'#size' => 32,
'#maxlength' => 64,
);
$form['add'] = array(
'#type' => 'submit',
'#value' => t('Add type'),
'#validate' => array('user_admin_type_validate'),
'#submit' => array('user_admin_type_submit'),
);
$form['actions'] = array('#type' => 'actions');
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Save order'),
'#submit' => array('user_admin_types_order_submit'),
);
return $form;
}
/**
* Form submit function. Update the type weights.
*/
function user_admin_types_order_submit($form, &$form_state) {
foreach ($form_state['values']['types'] as $ut_id => $type_values) {
$type = $form['types'][$ut_id]['#type'];
$type->ut_weight = $type_values['weight'];
user_type_save($type);
}
drupal_set_message(t('The type order have been updated.'));
}
function user_types() {
$query = db_select('users_types', 'ut');
$query->addTag('translatable');
$query->fields('ut', array('ut_id', 'ut_label'));
$query->orderBy('ut_weight');
$query->orderBy('ut_label');
$result = $query->execute();
$types = array();
foreach ($result as $key => $type) {
switch ($type->ut_id) {
// We only translate the built in type names
case WEBNOVIN_CUSTOMER_UT_ID:
$types[$type->ut_id] = t($type->ut_label);
break;
case WEBNOVIN_PREFERRED_CUSTOMER_UT_ID:
$types[$type->ut_id] = t($type->ut_label);
break;
case WEBNOVIN_SALES_AGENT_UT_ID:
$types[$type->ut_id] = t($type->ut_label);
break;
default:
$types[$type->ut_id] = $type->ut_label;
}
}
return $types;
}`
你能为我提供这段代码的输出吗$表单['types'][$ut\u id]['type']=对象数组在将对象强制转换为数组时,当值以整数开头,数组中的权重最终将是整数时,您可能会得到一些奇怪的结果。@Ryank objectstdClass541 3{[ut\u id]=>int1[ut\u label]=>string10客户[ut\u权重]=>int0}是result@Ryank我在这个表单上有一个主题和核心太一样了。此外,当我删除您提到的部分时,警告将消失。当您尝试使用对象或数组作为索引键访问数组索引时,会出现非法偏移类型错误!在这个错误中,它说的是什么行号和文件?因为元素_信息在脚本中不存在!只需查看user.admin.inc,就可以看到您正在尝试执行的操作,但需要更多的信息。@Ryank有人回答我:我怀疑问题在于您对角色/类型进行了全局搜索/替换,在第一次foreach中将角色更改为类型。类型用于向FAPI指示要添加的元素类型。这是真的。警告已经消失了