Drupal 7 钩子\块\视图未传递信息

Drupal 7 钩子\块\视图未传递信息,drupal-7,block,Drupal 7,Block,我正在尝试用Drupal7构建我的第一个自定义模块。它是一种用户在DB表中搜索客户信息的块形式。我已经创建了模块和信息文件。我的模块显示在modules and blocks部分下,但是当我将块添加到内容时,主题和内容不会从我的hook\u block\u视图中传递。因此,它不显示表单,只显示块标题和正文。有人能告诉我我错过了什么吗 <?php /** *@file * */ /** Implements hook_block_info(). * */ function searchE

我正在尝试用Drupal7构建我的第一个自定义模块。它是一种用户在DB表中搜索客户信息的块形式。我已经创建了模块和信息文件。我的模块显示在modules and blocks部分下,但是当我将块添加到内容时,主题和内容不会从我的hook\u block\u视图中传递。因此,它不显示表单,只显示块标题和正文。有人能告诉我我错过了什么吗

<?php
/**
*@file
*
*/

/** Implements hook_block_info().
*
*/

function searchEngine_block_info(){
    $blocks = array();

    $blocks['searchEngine_form'] = array (
        'info'  => t("Applicant Search"),
        'cache' => DRUPAL_CACHE_GLOBAL,
    );
    return $blocks;
}

/** Implements hook_block_view().
*
*/

function searchEngine_block_view($delta = ''){
    $block = array();
    switch($delta) {
        case 'searchEngine_form':
        $block['subject'] = t('Applicant Search');
        $block['content'] = drupal_get_form('searchEngine_form');
    break;
    }
    return $block;
}

function searchEngine_form($form, &$form_state) {
    $form['searchOptions'] = array(
        '#type'     => 'select',
        '#title'    => t("Select how you would like to search for an applicant."),
        '#default_value'=> variable_get("gwf", true),
        '#options'  => array(
            'gwf'       => "GWF".t(" Number"),
            'email'     => t("Email"),
            'name'      => t("Name"),
            'phone_number'  => t("Phone Number"),
        ),

    );
    $form['data'] = array(
        '#type'     => 'textfeild',
        '#required' => TRUE,
    );
    $form['submit'] = array(
                '#type' => 'submit',
                '#value' => t('Submit'),
        );
        return $form;
}

function searchEngine_submit($form, $form_state) {
    if(isset($form['data'])){
        if($form['searchOptions'] == "name"){
            $name = preg_split("/[\s,]+/", $form['data']);
            $result = db_query('SELECT * FROM tls_active_applicants WHERE first_name = '.$name['0'].' AND last_name = '.$name['1']);
        }else{
            $result = db_query('SELECT * FROM tls_active_applicants WHERE '.$form['searchOptions'].' = '.$form['data']);
        }
        print_r($result);
    }
}

在此处传递可渲染数组很好:

$block['content'] = drupal_get_form('searchEngine_form');
我刚刚测试了您的代码,表单对我来说很好:

现在我们知道了代码的工作原理,这让我想知道它是否只是一些css或隐藏它的东西

我还将安装devel模块,因为它将有助于调试

您可以使用以下代码:

function searchEngine_block_view($delta = ''){
    $block = array();
    switch($delta) {
        case 'searchEngine_form':
        $block['subject'] = t('Applicant Search');
        $form = drupal_get_form('test_form');
        dpm($form); // call to dpm here to log if you are successfully getting the form at this point
        $block['content'] = $form;
    break;
    }
    return $block;
}

那没用。在进行更改和刷新后,我没有注意到任何更改。我只是测试了您的代码,它对我来说运行良好。您确实需要更改的一件事是将您的函数searchEngine\u submit重命名为searchEngine\u form\u submit以使其正常工作。因此,您认为drupal的安装可能有问题吗?对我来说,唯一显示的是配置中“块标题”和“块正文”中的内容。我试着把这些空着,看看我的表格是否会显示,若并没有身体,但身体是必需的。有人提到我可能想添加一个hook\u block\u configure,但我没有成功。还有其他想法吗?世界上最常见的Drupal问题,但是。。。你清除缓存了吗?如果对Drupal有任何疑问,请清除缓存!您目前的操作不需要hook\u block\u配置。我认为您应该尝试的另一件事是重命名表单。当所有这些都失败时,当我调试任何PHP时,我开始重命名变量和函数。也许可以试试搜索引擎搜索表单。只是个主意。