আমি কীভাবে একটি লেবেলে একটি ক্লাস যুক্ত করতে পারি?


8

ড্রুপালের ফর্ম এপিআই দ্বারা তৈরি করা নির্দিষ্ট লেবেলে আমাকে একটি শ্রেণির নাম যুক্ত করতে হবে:

$form['name'] => array(
  '#type' => 'textfield',
  '#title' => 'Prénom'
);

আমি যদি নিম্নলিখিতটি ব্যবহার করি <textarea>তবে একটি ক্লাস পায়, তবে লেবেলটি নয়।

$form['name']['#attributes']['class'] = array('myClass');

আমি অনুরূপ কিছু খুঁজছি যা একটি ক্লাস যুক্ত করবে <label>


আপনি যদি ক্ষেত্রের নামের জন্য প্যারেন্ট কনটেইনার শ্রেণিটি ব্যবহার করে সিএসএস দিয়ে সেই ফিল্ড লেবেলটিকে ইতিমধ্যে লক্ষ্য করতে না পারেন তবে আপনার বিবেচনা করা উচিত.field-name-field-myfield label{ color:red; }
ডেভিড থমাস

উত্তর:


6

আপনি ফর্ম এপিআই এর বৈশিষ্ট্য ব্যবহার করে ফর্ম উপাদানটির লেবেল ট্যাগে কোনও শ্রেণি সেট করতে পারবেন না। তবে আপনি উপাদানটি (লেবেল + টেক্সারিয়া) মোড়ানোর জন্য একটি উপসর্গ এবং একটি প্রত্যয় সেট করতে পারেন এবং আপনি যা করতে চেষ্টা করছেন তা সম্পাদন করতে কিছু নেস্টেড সিএসএস নির্বাচক ব্যবহার করতে পারেন।

$form['name'] => array(
  '#type' => 'textfield',
  '#title' => 'Prénom'
  '#prefix' => '<div class="myClass">',
  '#suffix' => '</div>'
);

এবং সিএসএসে আপনি এই জাতীয় লেবেল ট্যাগটি নির্বাচন করতে পারেন:

.myClass label {
  text-transform: uppercase; /* just for example */
}

কোনও শালীন সমাধান নয় তবে আমি সাধারণত এটিই করি এবং অন্যকে করতেও দেখেছি। #attributesইনপুট উপাদানটি নিজেই তাই এটি আপনার কোডটি সঠিক করে এটি myClassক্লাসে যোগ করে textarea


7

স্ট্যাকওভারফ্লোতে এই পোস্টে বলা হয়েছে যে ড্রুপাল ফর্ম এপিআই লেবেলে ক্লাস যুক্ত সমর্থন করে না, তবে এতে একটি শালীন কাজ রয়েছে:

পরিবর্তে, আপনি ক্ষেত্র এবং লেবেলের জন্য মোড়কের ক্লাসটি ব্যবহার করে এটি লক্ষ্যবস্তু করতে পারেন:

.form-item-field-foo label {
  /* CSS here */
}

থিম_ফর্ম_ইলেটমেন্ট_এবেল () এর জন্য এপিআই ডকুমেন্টেশনটি দেখায় যে লেবেলগুলি কেন সম্ভব নয় (কমপক্ষে বক্সের বাইরে নয়): বৈশিষ্ট্য অ্যারেটি থিম ফাংশনে আরম্ভ করা হয়েছে এবং মাত্র দুটি alচ্ছিক শ্রেণিতে ('বিকল্প' এবং 'উপাদান দিয়ে পপুলেট করা হয়েছে) -invisible ')।

সুতরাং, এটি কি সম্পূর্ণ অসম্ভব? আসলে, আমি মনে করি এটি করা যেতে পারে, তবে আমার অবশ্যই যুক্ত করা উচিত যে আমি নিজে এটি চেষ্টা করি নি। আপনি চেষ্টা করতে পারেন:

  • কাস্টম মডিউলটিতে hook_element_info_alter ()#label_attributes ব্যবহার করে কিছু (বা সমস্ত) ফর্ম উপাদানগুলিতে একটি নতুন সম্পত্তি যুক্ত করুন ;
  • থিম_ফর্ম_এলিমেন্ট_লাবেল () ওভাররাইড করুন এবং এটির $attributesমান দিয়ে অ্যারেটিকে মার্জ করুন $element['#label_attributes']

যদি আপনি এটি চেষ্টা করে যাচ্ছেন তবে দয়া করে এটি কাজ করে কিনা তা আমাদের জানান।


সময়ের সীমাবদ্ধতার কারণে, আমি আয়শ কে প্রস্তাবিত সহজ সমাধানের জন্য যাব This এটি ভাল সমাধান হিসাবে দেখায় যদিও এটি অন্য কাউকে সহায়তা করতে পারে। +1
শান

থিম_রফর্ম_এলিমেন্ট_বেল () থিম ফাংশন উল্লেখ করার জন্য প্লাস 1
আইডিয়াগ্রাম

কর্মক্ষেত্র: যদি সাইটে জেএস প্রয়োজন হয় তা গ্রহণযোগ্য, ডমকে টুইট করা সম্ভবত সবচেয়ে সহজ। যদি তা না হয় তবে অন্য (গড়) উপায় হ'ল সরানো '#title'বা সেট করা '#title_display' => 'invisible'এবং তারপরে ঠিক তাই করা '#suffix' => '<label for="TheElementId" class="option">Display This Text</label>'। এটি এটিকে <div>তার ফর্ম-ইনপুট উপাদানগুলির জন্য রেপার ড্রুপাল ব্যবহারের বাইরে উপস্থিত হওয়ার কারণ হিসাবে দেখা দেয় , তবে একটি সিএসএস নিয়ম এটিকে আলাদা দেখায় না।
সেলডমনিডি

2

আয়েশের উত্তরের প্রসারকে আমি এ জাতীয় কোডের জন্য উদাহরণ ব্যবহারের ক্ষেত্রে অন্তর্ভুক্ত করেছি। যদিও মার্ভানজেন্ডের উত্তরটি অনেক বেশি দ্রুপলেস্ক খুব সাধারণ ফলাফলের জন্য এটি অনেক খননকার্য। নির্দিষ্ট ফর্মের সাথে নির্দিষ্ট উপাদান এবং সিএসএস বান্ডিল রাখা সাধারণ ব্যবহারের ক্ষেত্র, যা আমাদের লক্ষ্যমাত্রা এবং অভ্যন্তরীণ উপাদানগুলিতে কাজ করার অনুমতি দেয় এটি একটি সামান্য কিছুটা সুনির্দিষ্ট।

http://legomenon.io/article/drupal-7-adding-form-placeholder-attributes

function mymodule_form_alter(&$form, $form_state, $form_id) {
  switch ($form_id) {
    // Waterfall.
    case 'webform_client_form_16':
    case 'webform_client_form_51':
    case 'webform_client_form_64':
    case 'webform_client_form_78':
      $exclude = array('select', 'radios', 'checkboxes', 'managed_file');
      foreach ($form['submitted'] as $name => $component) {
        if (!in_array($component['#type'], $exclude) && $name != '#tree') {
          $form['submitted'][$name]['#prefix'] = '<span class= "label-invisible">';
          $form['submitted'][$name]['#suffix'] = '</span>';
          $form['submitted'][$name]['#attributes']['placeholder'] = $component['#title'];
        }
      }
      $form['#attached']['css'] = array(
        drupal_get_path('module', 'mymodule') . '/css/mymodule.form.css',
      );
    break;
  }
}

2

ড্রুপাল 8-এ, আপনার_মডিউল.মডিউল ফাইলটিতে কেবল যোগ করে তা করুন

function your_module_preprocess_form_element(&$variables) {

  $element = $variables['element'];
  if (isset($element['#label_attributes'])) {
    $variables['label']['#attributes'] = array_merge(
      $variables['attributes'],
      $element['#label_attributes']
    );
  }
}

এবং ফর্ম তৈরিতে # লেবেল_অ্যাট্রিবিউট যুক্ত করুন:

$form['some_field'] = [
  [...]
  '#label_attributes' => [
    'some_attr' => 'some_value',
  ]
]

0

আমি বেড়া ডি 7 মডিউলটি ব্যবহার করে এটি সম্পাদন করার অপেক্ষাকৃত সহজ উপায় খুঁজে পেয়েছি। ক্ষেত্রগুলি কাস্টমাইজ করতে এই মডিউলটি প্রচুর টেম্পলেট ফাইলের সাথে আসে। আপনি যে ক্ষেত্রটি একটি অনন্য ক্লাস দিতে চান তা সম্পাদনা করুন এবং আপনার জন্য প্রাসঙ্গিক কিছুতে মোড়কের মার্কআপটি পরিবর্তন করুন। এর পরে, মডিউলটির মধ্যে সংশ্লিষ্ট টেম্পলেট ফাইলটি সন্ধান করুন এবং এটি আপনার সাইটগুলিতে / সমস্ত / থিম / THEME_NAME এ অনুলিপি করুন।

আগে

<span class="field-label"<?php print $title_attributes; ?>>
  <?php print $label; ?>:
</span>

পরে

<span class="<?php print $label; ?> field-label"<?php print $title_attributes; ?>>
  <?php print $label; ?>:
</span>

যোগ করে <?php print $label; ?>, এটি শ্রেণীরূপে ক্ষেত্রের নাম মুদ্রণ করে, আপনাকে পৃথকভাবে সমস্ত ফিল্ড-লেবেল লক্ষ্যবস্তু করার অনুমতি দেয়। আমি আশা করি এটি অন্য কাউকে সাহায্য করবে!


0

এটি নোংরা, তবে আপনি '# শিরোনাম'-সম্পত্তিটিতে এইচটিএমএল যুক্ত করতে পারেন:

$form['some_element'] = array(
  '#type'          => 'textfield',
  '#title'         => '<span title="HELP!">'.t($subchildlabel).'</span>',
  '#default_value' => 
) 
 
);

আমি নিজেই অবাক হয়েছি এটি কাজ করে। আমার মনে হয় দ্রুপাল এটিকে ফিল্টার করে দেবে, কিন্তু না। সুতরাং, আপনি অন্য শ্রেণীর সাথে লেবেলটি মোড়ানো করতে পারেন:

<label for="edit-m-vernacularname" class="inline"><span title="HELP!">Common name
</span> </label>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.