web-dev-qa-db-ja.com

ブロックでカスタムフォームを呼び出す

ブロックでカスタムフォームを呼び出そうとしています。フォームは私のカスタムモジュールで記述されています。フォームを呼び出すさまざまな方法を試しましたが、フォームを取得できませんでした。

これが構文です、私が最後に試しました。

$form = drupal_get_form('my_custom_form');
print drupal_render($form); 
//my_custom_form is my form_id

(または)

drupal_render(drupal_get_form('my_custom_form'));

ここに私が同様の質問を見つけたが、私の質問に対する正しい解決策が得られなかったリンクがあります。 ブロック内のフォーム

1
Kiran Tej

ブロックのコンテンツ定義でdrupal_get_formを使用してフォームを返す必要があります。 Drupalが残りを行います。

たとえば、次のようになります。

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

    $blocks['custom_block'] = array(
        'info' => t('Custom block example'),
        'title' => t('Custom block example'),
        'region' => 'content',
        'status' => 1,
    );

    return $blocks;
}

function YOURMODULE_block_view($delta = '')
{
    $block = array();

    switch ($delta) {
        case 'custom_block' :
            $block['content'] = YOURMODULE_block_content();
            break;
    }

    return $block;
}

function YOURMODULE_block_content()
{
    return drupal_get_form('my_custom_form');
}

function my_custom_form($form, &$form_state)
{
    // Build your form

    return $form
}
4
Mike Vranckx