【问题标题】:drupal 7 form, simple check on hook_submitdrupal 7 表单,对 hook_submit 的简单检查
【发布时间】:2013-10-10 13:57:49
【问题描述】:

我正在尝试通过反复试验来理解 Drupal 表单(与 Drupal 文档相处不融洽),我有点困惑为什么这不起作用:

function sform() {
    $form['password'] = array(
        '#type' => 'password',
        '#title' => 'enter 1234'
    );

    $form['submit'] = array(
        '#type' => 'submit',
        '#value' => '1234 and then click',
    );

    $form['#method'] = 'post';

    return $form;
}
function sform_submit($form_id, $form) {
    if (isset($form['values']['password']) && $form['values]']['password'] == "1234") {
        drupal_set_message(t('Success;'), '');
    }
    else {
        drupal_set_message("({$form['values']['password']})", 'warning');
        drupal_set_message(t('Failure'), 'error');
    }
}

我知道这一切都是非常基本的,而且我的想法不是让它保持这样的状态。正如我所说,我只是在刺激 API 看看什么是有效的以及如何工作。

但问题是,基本检查是“密码”字段存在并且等于“1234”。而且每次都失败。在失败分支中,我吐出了我从“密码”中获得的值,但我看到它仍然是“1234”......

$form['values']['password'] 和 "1234" 之间的比较不应该像我在这里想要的那样工作,有什么非常明显的原因吗???

【问题讨论】:

    标签: php drupal


    【解决方案1】:

    你的 if 测试有错字:

    $form['values]']['password']
    //should be
    $form['values']['password']
    

    您的功能设置似乎不正确,请看这里:https://api.drupal.org/api/drupal/includes!form.inc/group/form_api/7

    在使用表单时,您应该传递 $form$form_state(通过引用)。

    取自以上链接:

    function my_module_example_form($form, &$form_state) {
      $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('Submit'),
      );
      return $form;
    }
    function my_module_example_form_validate($form, &$form_state) {
      // Validation logic.
    }
    function my_module_example_form_submit($form, &$form_state) {
      // Submission logic.
    }
    

    此外,您的菜单挂钩应调用 drupal_get_form 作为回调,并将您的函数名称作为页面参数。

    $items['sform'] = array(
        'title' => 'My Form',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('sform'),
        'access arguments' => array('some rule'),
    );
    

    【讨论】:

    • 去他妈的。我需要再睡一会儿。 :( 非常感谢。
    • 感谢您扩展该答案。您将我的愚蠢问题转换为有用的答案。向你致敬。
    • 和你在同一条船上。我同意 Drupal 的文档有时很难导航并找到您需要的信息。认为当您开始做更复杂的事情时,这将帮助您在未来走上正确的道路。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多