2009-09-20 9 views

答えて

15

drupal_get_form($form_id) - 上のPHPフィルタを備えたブロック内のモジュールのhook_blockでさえ($オペアンプ==「ビュー」)か... 身震いを...それを置きます。

最初にフォームIDを見つける必要があります。フォーム内にform_idという名前の隠し番号inputを探します。その値はフォームIDでなければなりません。

また、Form Blockモジュールを使用することもできます。

+1

ありがとうございました。それがトリックでした。しかし、なぜ震え? – coderama

+3

基本的に、PHPフィルタは悪い考えです。 Drupalのハンドブックのページでは、「悪意のあるユーザーの手にとって重大かつ危険なセキュリティリスクであり、誤って不正な形式のPHPコードを入力しても、信頼できるユーザーが誤ってサイトを侵害する可能性があります。ほとんどの場合、モジュールを書くほうがずっと優れています(2行のオーバーヘッド、本当に)。 –

+3

1つの逸話で、私はPHPフィルタを持つノードで軽微な構文エラーがありました。それはcronを壊した検索インデックスを破った。それはデバッグの複雑さの価値があるわけではありません。 – Grayside

0

もう1つのことは、残りのファイルシステムではなく、PHPコードの一部をデータベースに格納することです。コードを検索する時間を忘れると時間を無駄にするのは簡単です。grepは、すべてのブロックを通過し、PHPがあるかどうかを確認するのに便利です。

function yourmodule_block_view($delta='') 
{ 
    switch($delta) { 
    case 'your_block_name': 
     $block['subject'] = null; // Most forms don't have a subject 
     $block['content'] = drupal_get_form('yourmodule_form_function'); 
     break; 
    } 
    return $block; 
} 

drupal_get_formによって返されたフォームの配列を自動的にレンダリングされます:Drupalの7では

26

、それはこのようになります。

yourmodule_form_functionは、フォーム配列を返す関数(モジュールまたは既存のDrupalモジュール内)です。

+1

hook_block_info()を実装する必要があることを覚えておいてください。 –

関連する問題