Drupal7块配置AJAX

Drupal7块配置AJAX,ajax,forms,callback,drupal-7,block,Ajax,Forms,Callback,Drupal 7,Block,我正在以编程方式构建一个具有两个选择框的自定义块。第一个将自动填充,第二个将基于第一个的值填充。理想情况下,我希望使用AJAX,并且我有在标准表单中集成AJAX的经验,但是块配置表单不包含$form_状态变量,并且似乎功能不同。是否可以使用标准方法 '#ajax' => array( 'callback' => 'my_callback', 'wrapper' => 'the-id', 'method

我正在以编程方式构建一个具有两个选择框的自定义块。第一个将自动填充,第二个将基于第一个的值填充。理想情况下,我希望使用AJAX,并且我有在标准表单中集成AJAX的经验,但是块配置表单不包含$form_状态变量,并且似乎功能不同。是否可以使用标准方法

'#ajax'               => array(
  'callback'          => 'my_callback',
  'wrapper'           => 'the-id',
  'method'            => 'replace',
  'effect'            => 'fade',
),
回调将如何工作

谢谢,
Howie

我没有尝试这个方法,但我打赌它是有效的:使用hook\u form\u alter()访问块配置表单。在那里,您将有一个&$form_状态,并且能够完成漂亮的AJAX工作()。 困难的部分是只在改变钩处改变你的形态。可能的方式:

不确定这是否有效(最优雅的方式):

丑陋但绝对可能:

function mymodule_form_alter(&$form,&$form_state,$form_id) {
  if ($form_id == 'block_admin_configure' && arg(4) == 'mymodule') {
       //do fancy ajax stuff
    }
  }
}
function mymodule_block_configure($delta = '') {      
    $form = array();
    if ($delta == 'my_block') {
        $form["my_block_change_this"] = array(
            "#type" => "hidden",
            "#value" => "lalala",
        )
    }
}

function mymodule_form_alter(&$form,&$form_state,$form_id) {
    if ($form_id == 'block_admin_configure' ) {
        if (!empty($form['my_block_change_this'])) {
            //do fancy ajax stuff
        }
    }
}
甚至更丑陋,但也有可能:

function mymodule_form_alter(&$form,&$form_state,$form_id) {
  if ($form_id == 'block_admin_configure' && arg(4) == 'mymodule') {
       //do fancy ajax stuff
    }
  }
}
function mymodule_block_configure($delta = '') {      
    $form = array();
    if ($delta == 'my_block') {
        $form["my_block_change_this"] = array(
            "#type" => "hidden",
            "#value" => "lalala",
        )
    }
}

function mymodule_form_alter(&$form,&$form_state,$form_id) {
    if ($form_id == 'block_admin_configure' ) {
        if (!empty($form['my_block_change_this'])) {
            //do fancy ajax stuff
        }
    }
}

提示:打印出form_state-array(在alterhook)并查看其中的内容(当我遇到FAPI问题时,这总是我要做的第一件事)。希望这有帮助

我很难过这没有任何回应。你有没有试过让它工作或者找到你的答案?后续链接会很棒,因为我正在做完全相同的事情。