我正在Drupal 7中创建一个自定义模块,这是一个求职。我想要这样做,所以你可以指定一个干净的URL来执行搜索,如下所示:
www.example.com/job-board/cardiology/california
“心脏病学”是“专业”变量,“加利福尼亚”是“位置”变量。
现在我知道如何在我的hook_menu中映射变量并访问变量。问题是如何在提交时创建一个创建干净网址的搜索表单?换句话说,如果我有这个:
<form method="get" action="job-board">
<select name="specialty">
<option value="cardiology">Cardiology</option>
<option value="some_other_value">Some Other Value</option>
</select>
<select name="location">
<option value="california">California</option>
<option value="some_other_state">Some Other State</option>
</select>
<input type="submit">
</form>
我提交了它,它将转到www.example.com/job-board?specialty=cardiology&location=california而不是www.example.com/cardiology/california。如何让表单构建一个干净的URL?
答案 0 :(得分:1)
您应该使用Drupal的Form API创建该表单,并为其分配自定义提交回调。
在该提交回调中,您可以执行验证,如果一切正常,则将用户重定向到相应的URL。
请参阅Examples模块的源代码,特别是与Form API相关的模块,以便了解有关它的更多信息。
简而言之,这就是你要做的事情:
/**
* Sample form.
*/
function MYMODULE_sample_form() {
$form['specialty'] = array(
'#title' => t('Specialty'),
'#type' => 'textfield',
'#required' => TRUE,
);
$form['state'] = array(
'#title' => t('State'),
'#type' => 'select',
'#options' => array(
'california' => t('California')
),
);
$form['actions'] = array('#type' => 'actions');
$form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Submit the form'));
return $form;
}
/**
* Sample form submit processing.
*/
function MYMODULE_sample_form_submit($form, &$form_state) {
$specialty = $form_state['values']['specialty'];
$state = $form_state['values']['state'];
drupal_goto($specialty . '/ ' . $state);
}