سؤال

سؤال آخر حول Drupal WebForms - النموذج نفسه مدمج بواسطة /concludes/form.inc

function theme_form_element($element, $value)

ويضيف أ <label> عنصر إلى الإخراج $. أرغب في إزالة هذه التسمية فقط لـ WebForm ، لذلك يجب علي تجاوز الوظيفة. كيف يمكنني تجاوزه للحصول على مواقع ويب واحدة فقط ، مع تركها بنفس الشيء في جميع الآخرين؟ على سبيل المثال

if ($block == 'contact'):
  // only output <input> form element stored in $value
  function mytheme_html_form_element($element, $value) {
    $t = get_t();
    $output .= " $value\n";
    return $output;
  }
endif;

هل هذا ممكن ، وماذا يحدث في حالة if؟

هل كانت مفيدة؟

المحلول 2

كان عليّ أن أقوم بعمل hook_form_alter ، لكن التسمية نفسها كانت في عنصر ['sumrated']. هنا هو الرمز

  if($form_id == 'webform_client_form_18') {
    $form['submitted']['#children'] = '
    <input
     type="text" 
     maxlength="128"
     name="submitted[email]"
     id="edit-submitted-email"
     value="' . $form['submitted']['email']['#default_value']. '"
     class="form-text required"
    />
  ';
  }

في شكل مختلف ، تم إزالة #Title (+1 بالنسبة لك!) ، ولكن كانت هذه حالة مختلفة.

نصائح أخرى

إذا كنت تتطلع فقط إلى إزالة التسمية ، فيمكنك أيضًا استخدامها hook_form_alter (), ، وتحقق من أن $ form_id مساوية لـ WebForm المعني. سيكون المعرف من النموذج: WebForm_Client_form_n حيث N هو معرف العقدة لـ WebForm.

بمجرد تشغيل النموذج المناسب ، يمكنك إلغاء ضبط الملصق باستخدام رمز مثل هذا: على سبيل المثال:

 unset($form['submitted']['first_name']['#title']);

والتي من شأنها إلغاء ضبط الملصق لحقل يسمى first_name.

لن أفسد عناوين عناصر النموذج. يمكنك الحصول على نتائج غير متوقعة عندما يتم تقديم النموذج الخاص بك بواسطة محرك السمة.

يمكنك القيام بذلك عدة طرق:

موضوع كل عنصر أو الشكل بأكمله مع '#theme' => 'my_callback'.

يمكنك أيضًا إنشاء عنصر النموذج الخاص بك باستخدام Hook_Elements الذي يستخدم خطاف السمة المقابل.

يرى:

http://api.drupal.org/api/drupal/developer-topics-forms_api_reference.html

http://api.drupal.org/api/function/hook_elements/6

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top