我正在尝试创建一个分析用户内容并使用第三方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函数。
请告知。
答案 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)
干杯