Php 从drupal 6迁移到drupal 7 form_alter hook会抛出一个错误-注意:未定义的索引:sport_utils_form_alter()中的按钮
我正在从Php 从drupal 6迁移到drupal 7 form_alter hook会抛出一个错误-注意:未定义的索引:sport_utils_form_alter()中的按钮,php,drupal,drupal-7,hook-form-alter,Php,Drupal,Drupal 7,Hook Form Alter,我正在从Drupal6升级到Drupal7。更新后,我启用了此模块 以下是我的功能: function sport_utils_form_alter($form, $form_state, $form_id) { if (strpos($form_id, '_node_form') !== FALSE) { $form['#validate'][] = 'byu_sport_utils_verify_valid_author'; $form['#valid
Drupal6
升级到Drupal7
。更新后,我启用了此模块
以下是我的功能:
function sport_utils_form_alter($form, $form_state, $form_id) {
if (strpos($form_id, '_node_form') !== FALSE) {
$form['#validate'][] = 'byu_sport_utils_verify_valid_author';
$form['#validate'][] = 'byu_sport_utils_remove_first_line_break';
$form['top_buttons'] = $form['buttons'];
$form['top_buttons']['#weight'] = -500;
$form['top_buttons']['#prefix'] = $form['buttons']['#prefix'] = '<div class="button-bar">';
$form['top_buttons']['#suffix'] = $form['buttons']['#suffix'] = '</div><div class="clear"></div>';
}
}
我无法确定是否需要将$form['buttons']
替换为在Drupal7中工作的其他东西
有什么建议吗?在Drupal 7中,表单按钮分组在
$form['actions']
下。因此,您需要修改您的代码以支持以下内容
function sport_utils_form_alter($form, $form_state, $form_id) {
if (strpos($form_id, '_node_form') !== FALSE) {
$form['#validate'][] = 'byu_sport_utils_verify_valid_author';
$form['#validate'][] = 'byu_sport_utils_remove_first_line_break';
/**
* Copy the action buttons (submit, preview, etc ..)
* and place them at the top of the form
*/
if(!empty($form['actions'])) {
$actions = element_children($form['actions'], TRUE);
foreach($actions as $name) {
$form['top_buttons']["$name-top"] = $form['actions'][$name];
}
}
$form['top_buttons']['#weight'] = -500;
$form['top_buttons']['#prefix'] = $form['actions']['#prefix'] = '<div class="button-bar">';
$form['top_buttons']['#suffix'] = $form['actions']['#suffix'] = '</div><div class="clear"></div>';
}
}
函数sport\u utils\u form\u alter($form、$form\u state、$form\u id){
if(strpos($form_id,'.\u node_form')!==FALSE){
$form['#validate'][]=“byu_sport_utils_verify_valid_author”;
$form['#validate'][]=“byu_sport_utils_remove_first_line_break”;
/**
*复制操作按钮(提交、预览等)
*然后把它们放在表格的顶部
*/
如果(!empty($form['actions'])){
$actions=element_children($form['actions',],TRUE);
foreach($actions作为$name){
$form['top_buttons'][“$name top”]=$form['actions'][$name];
}
}
$form['top_button']['#weight']=-500;
$form['top#u buttons']['#prefix']=$form['actions']['#prefix']='';
$form['top_buttons']['#suffix']=$form['actions']['#suffix']='';
}
}
是否尝试将底部的按钮复制到顶部?是。但是我没有编写这个函数,所以我不能100%确定如何完成这个任务。也许你可以将标题修改为“复制表单按钮并将其放在节点表单的顶部-Drupal 7”这对我不起作用。我没有收到任何错误,但当我检查内容时,它没有在代码中添加任何后缀前缀。@h0你是否清除了缓存以便识别钩子形式?(有关清除缓存的帮助:)
function sport_utils_form_alter($form, $form_state, $form_id) {
if (strpos($form_id, '_node_form') !== FALSE) {
$form['#validate'][] = 'byu_sport_utils_verify_valid_author';
$form['#validate'][] = 'byu_sport_utils_remove_first_line_break';
/**
* Copy the action buttons (submit, preview, etc ..)
* and place them at the top of the form
*/
if(!empty($form['actions'])) {
$actions = element_children($form['actions'], TRUE);
foreach($actions as $name) {
$form['top_buttons']["$name-top"] = $form['actions'][$name];
}
}
$form['top_buttons']['#weight'] = -500;
$form['top_buttons']['#prefix'] = $form['actions']['#prefix'] = '<div class="button-bar">';
$form['top_buttons']['#suffix'] = $form['actions']['#suffix'] = '</div><div class="clear"></div>';
}
}