如何通过AHAH Drupal 6传递参数?

时间:2014-04-08 15:52:51

标签: javascript php drupal drupal-6 drupal-modules

我正在尝试创建一个分析用户内容并使用第三方API对其进行评分的模块。以下是基本逻辑:模块将文章标题和内容传递给API,API返回显示在编辑节点页面上的结果。到目前为止这个工作正常。

现在我想通过AHAH完成这项工作。当用户单击按钮时,它应立即显示API结果。问题是如何通过AHAH将标题和内容传递给API?之前我可以通过调用另一个php函数并将标题和文章内容作为函数参数传递。

这是我到目前为止所拥有的。

hook_form_alter,用于编辑节点表单,并将按钮添加到触发器AHAH。

function ar_form_alter(&$form, &$form_state, $form_id) {
    $title = $form['title']['#default_value']; 
    $content = $form['body_field']['body']['#default_value'];

    $form['arPost']['aranalyze'] = array(
                '#type' => 'image_button',
                '#src' => drupal_get_path('module', 'ar') . '/inc/images/analyze-button.png',
                '#description' => t("Click to score this content."),
                '#prefix' => '<div id="ax">',
                '#suffix' => '</div>',
                '#weight' => 30,
                '#ahah' => array(
                    'path' => 'admin/settings/getscore',
                    'method' => 'after',
                    'wrapper' => 'ax',
                ),
            );

}

Hook_menu是这个AHAH电话的中间人。 (如何从hook_form_alter函数传递文章内容?

function ar_menu() {
$items['admin/settings/getscore'] = array(
        'page callback' => 'ar_test',
        'access arguments' => array('access content'),
         'type' => MENU_CALLBACK,
    );

    return $items;
}

这是Module调用API并将HTML结果发送回显示的地方。

function ar_test() {
    // should be function ar_test($title, $content){
    // Should pass $article and $content to another php function to initiate the call
    // $output = ar_api_call($title, $content);

    print drupal_json(array('status' => TRUE, 'data' => $output));
}

现在我需要找到一种方法将数据(作为参数)从hook_form_alter传递给ar_test函数。

请告知。

2 个答案:

答案 0 :(得分:0)

您应该只需从$_POST超全局变量中访问表单值。

答案 1 :(得分:0)

以下是解决方案:

来自hook_form_alter()

'#ahah' => array(
                    'path' => 'getscore/'.$value_variable,

来自hook_menu()

 $items['getscore/%'] = array(
        'page callback' => 'ar_test',
        'access arguments' => array('access content'),
        'page arguments' => array(1),
         'type' => MENU_CALLBACK,
    );

    return $items;

getsore /%%符号传递的值是hook_form_alter,并通过页面参数将其发送到page_callback。

然后简单地接受这个论点

ar_test($var=0)

干杯