2009-09-20 9 views

उत्तर

15

drupal_get_form($form_id) - एक मॉड्यूल के hook_block में यह ($ सेशन == 'दृश्य') या यहां तक ​​कि ... कंपकंपी ... डाल पर पीएचपी फिल्टर के साथ एक ब्लॉक के अंदर।

आपको फॉर्म आईडी पहले ढूंढना होगा - input के नाम के साथ form_id नाम के साथ छिपाएं। इसका मूल्य फॉर्म आईडी होना चाहिए।

इसके अलावा, आप बस Form Block मॉड्यूल का उपयोग कर सकते हैं।

+1

धन्यवाद। वह चाल है। लेकिन कड़वाहट क्यों? – coderama

+3

असल में, PHP फ़िल्टर एक बुरा विचार है। इस विषय पर ड्रूपल के हैंडबुक पेज से: "... यह एक दुर्भावनापूर्ण उपयोगकर्ता के हाथों में एक महत्वपूर्ण और खतरनाक सुरक्षा जोखिम है। यहां तक ​​कि एक भरोसेमंद उपयोगकर्ता दुर्भावनापूर्ण या गलत PHP कोड दर्ज करके साइट पर गलती से समझौता कर सकता है"। आप मॉड्यूल लिखने से लगभग हमेशा बेहतर होते हैं (वास्तव में ओवरहेड की कुछ पंक्तियां, वास्तव में)। –

+3

एक उपाख्यान, PHP फ़िल्टर के साथ एक नोड में एक मामूली वाक्यविन्यास त्रुटि थी। यह खोज इंडेक्सिंग तोड़ दिया, जो क्रॉन तोड़ दिया। यह डीबगिंग जटिलता के लायक नहीं है। – Grayside

0

एक और बात यह है कि यह फाइल सिस्टम के बजाय डेटाबेस में कुछ PHP कोड डालता है, जहां बाकी है। कोड को खोजने में बहुत समय भूलना और बर्बाद करना आसान है, और grep बहुत अधिक सुविधाजनक है कि हर ब्लॉक के माध्यम से जा रहा है और देख रहा है कि PHP वहां है या नहीं।

26

Drupal 7 में, यह इस तरह दिखता है:

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 द्वारा लौटाए गए प्रपत्र सरणी स्वचालित रूप से रेंडर किया जाएगा।

yourmodule_form_function एक फ़ंक्शन (आपके मॉड्यूल या मौजूदा ड्रूपल मॉड्यूल में) है जो फॉर्म सरणी देता है;

+1

याद रखें कि आपको hook_block_info() को लागू करने की आवश्यकता है –

संबंधित मुद्दे