【问题标题】:Drupal 7 - Construct clean URL from form postDrupal 7 - 从表单帖子构建干净的 URL
【发布时间】:2013-10-23 00:49:25
【问题描述】:

我正在 Drupal 7 中创建一个自定义模块,即求职。我想要这样做,以便您可以指定一个干净的 URL 来执行搜索,如下所示:

www.example.com/job-board/cardiology/california

其中“cardiology”是“专业”变量,“california”是“位置”变量。

现在我知道如何在我的 hook_menu 中映射变量并访问变量了。问题是如何创建一个搜索表单,在提交时创建干净的 url?换句话说,如果我有这个:

<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?

【问题讨论】:

    标签: forms drupal menu drupal-7


    【解决方案1】:

    您应该使用 Drupal 的表单 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);
    }
    

    【讨论】:

    • 太棒了。这就说得通了。谢谢!
    猜你喜欢
    • 2013-06-29
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多