0

我在 Drupal 7 中使用表单更改向节点表单添加另一个按钮:

function mymod_form_alter(&$form, &$form_state, $form_id) {
  $form[$key]['button'] = array(
    '#type' => 'submit',
    '#value' => t('Seach),
    '#limit_validation_errors' => array(),
    '#submit' => array('mymod_process'),
  );
 }

...
...

function mymod_process(&$form, &$form_state) {
  $form_state['rebuild'] = TRUE;    
  // Do my processing here...
}

我已添加$form_state['rebuild'] = TRUE;以在按下按钮时保留表单值。我第一次按下这个按钮,第二次按下我的自定义按钮,它给了我以下错误:

PHP Fatal error:  Cannot create references to/from string offsets nor overloaded objects in /www/includes/common.inc on line 6430

然后当我重新加载页面时, drupal_set_message() 报告以下内容:

Notice: Array to string conversion in drupal_attributes() (line 2298 of /www/includes/common.inc).

如果我取出$form_state['rebuild'] = TRUE;,错误就会消失。但是随后表单值不会被保留。有什么想法可以在不遇到此错误的情况下保留表单值吗?

4

1 回答 1

0

我有一个类似的问题,我放'#limit_validation_errors' => array(),的地方和没有保留的表单值。如果你去掉那条线,表单值实际上会得到保留。

这里

这通常用于“后退”按钮的多步表单中,例如,其中'#limit_validation_errors' => array()意味着不验证任何内容,因为当前页面上的表单值无论如何都将被丢弃

于 2013-02-28T14:27:57.613 回答