【问题标题】:Drupal - Drupal.settings values does not reload when validate failsDrupal - Drupal.settings 值在验证失败时不会重新加载
【发布时间】:2012-01-09 09:22:23
【问题描述】:

我已经使用这个将设置添加到我的 javascript 文件中:

drupal_add_js(array('xc' => array('unit_descriptions' => $descriptions)), 'setting');
drupal_add_js(array('xc' => array('unit_names' => $units)), 'setting');

在加载 .js 文件时它工作正常:

$unitName.text(Drupal.settings.xc.unit_names[utid]);
$unitDesc.text(Drupal.settings.xc.unit_descriptions[utid]);

为了加载值。 但是当验证失败时,例如:如果我没有指定名称或其他任何东西,这两个数组就会消失,我会在控制台中得到语句:

Drupal.settings.xc is undefined

如何重新加载这些数组,或防止验证失败删除数组。 请,任何帮助表示赞赏。

亲切的问候!

【问题讨论】:

  • 为什么不在做某事之前先检查一下 xc 是否已定义?
  • $descriptions 或 $units 为空时验证是否失败?当您查看您希望在代码中出现的位置的源代码时,您会得到什么输出?
  • 我解决了,在验证函数中我只是检查了是否有错误,如果存在错误,我只是重新添加js文件!无论如何,谢谢。

标签: jquery drupal drupal-6


【解决方案1】:

我解决了,在验证函数中我只是检查了是否有错误,如果存在错误,我只是重新添加js文件。

【讨论】:

    【解决方案2】:
        $form['#after_build'][] = 'yourmodulename_after_build';
    
        function yourmodulename_after_build ($form, &$form_state) {
          //...do something...      
          return $form
        }
    

    在您的 hook_form 或 hook_form_alter 中使用此“#after_build”,因此您的更改将在每次显示表单时应用(也在验证等之后)

    【讨论】:

      猜你喜欢
      • 2016-05-21
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 2019-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多