পাঠ্য ইনপুট ক্ষেত্রে ফর্ম স্থানধারক যুক্ত করা হচ্ছে


22

কোনও নিয়মিত ফর্ম রূপান্তর করার এবং কোনও মডিউল সহ স্থানধারক যুক্ত করার কোনও উপায় আছে, বা এটি কোনও ফর্ম টেম্পলেট বা jQuery দিয়ে করা উচিত?

উত্তর:


31

এটি একটি এইচটিএমএল 5 স্থানধারক, আপনি কেবল এটির কোনও উপাদান হিসাবে একটি বৈশিষ্ট্য হিসাবে যুক্ত করতে পারেন এবং এইচটিএমএল 5 সক্ষম ব্রাউজারগুলি সেই অনুযায়ী প্রতিক্রিয়া জানাবে:

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'some_form') {
    $form['some_element']['#attributes']['placeholder'] = t('Placeholder text');
  }
}

আপনি যদি একটি ফর্মের মধ্যে প্রতিটি পাঠ্যক্ষেত্রের জন্য স্বয়ংক্রিয়ভাবে স্থানধারক যুক্ত করতে চান (এই উদাহরণে ক্ষেত্রের শিরোনামের উপর ভিত্তি করে) তবে এর মতো একটি সংক্ষিপ্ত পুনরাবৃত্তির কাজটি কার্যকর হতে পারে:

function MYMODULE_auto_placeholders(&$element) {
  if ( isset($element['#type']) && $element['#type'] == 'textfield') {
    // set placeholder
    $element['#attributes']['placeholder'] = $element['#title'];
    // hide label
    $element['#title_display'] = 'invisible';
  }
  foreach (element_children($element) as $key) {
    MYMODULE_auto_placeholders($element[$key]);
  }
}

তারপরে আপনার ফর্মের পরিবর্তনের ফাংশনে কেবল কল করুন

MYMODULE_auto_placeholders($form);

এই পদ্ধতিটি একটি ফর্মের প্রতিটি পাঠ্যক্ষেত্রের পক্ষে কাজ করবে, #processফাংশনগুলিতে যুক্ত হওয়া ব্যতীত (উদাহরণস্বরূপ কোনও চিত্র ক্ষেত্রের Alt এবং শিরোনাম পাঠ্যক্ষেত্রের মতো)।


ফলাফল: ত্রুটি: ব্লে_আউটো_প্লেসোল্ডারগুলিতে () থিম / কাস্টম / বিএলএ / ব্লাথ থিমের লাইন 605) এ অপরিজ্ঞাত ফাংশন এলিমেন্ট-বাচ্চাদের () কল করুন।
টমাস

15

ক্লাইভের উত্তরটি চেষ্টা করেছিলাম:

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'some_form') {
    $form['some_element']['#attributes']['placeholder'] = t('Placeholder text');
  }
}

তবে আমার অবাক করে দিয়েছি, আমি টেক্সটফিল্ডের নয়, পাঠ্যক্ষেত্রের মোড়কে স্থানধারক পেয়েছি। তারপরে আমি নীচের মতো একটি প্রকরণ চেষ্টা করেছি, এটি কাজ করেছে!

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'some_form') {
    $form['some_element']['und'][0]['value']['#attributes']['placeholder'] = t('Placeholder text');
  }
}

ধন্যবাদ! আমি একটু পাগল হতে শুরু করছিলাম - এটি সম্পর্কে ভাবেনি।
মাইক ক্রিটেনডেন

"কিছু_সংশ্লিষ্ট" কী? উপাদানটির আইডি? আমি এটি কীভাবে খুঁজে পাব?
sokratis

@ সোক্র্যাটিস আপনি ডিপিএম ($ ফর্ম) দ্বারা উপাদানগুলির আইডি পেতে পারেন, তারা $ ফর্ম অ্যারের প্রথম স্তরে উপস্থিত হবে। নিম্নলিখিত মন্তব্য ফর্মটি পরিবর্তনের একটি প্রকৃত উদাহরণ: গুণাবলী '] [' স্থানধারক '] = টি (' বিষয় '); $ ফর্ম ['মন্তব্য_বডি'] ['আনড'] [0] ['মান'] ['# গুণাবলী'] ['স্থানধারক'] = টি ('সামগ্রী'); }} </code>
হেনরি

15

নীচের কোডের মতো, ফর্ম ক্ষেত্রের উপাদানের জন্য কেবল # সংযুক্তি অ্যারেতে স্থানধারক যুক্ত করুন।

   $form['my_textfield'] = array(
      '#type' => 'textfield',
      '#attributes' => array(
        'placeholder' => t('My placeholder text'),
      ),
    );

2
থেক্স, এটি আমার জন্য ড্রুপাল ৮ এ কাজ করেছে
কোনও এসসিওয়েট

ডি 8-তে সুন্দরভাবে কাজ করেছেন।

5

এতে হোঁচট খেয়েছে এবং ভেবেছিল ক্লাইভের উত্তরটি স্বয়ংক্রিয়ভাবে স্থানধারীদের যুক্ত করতে ভাল লাগছে।

আপনি, এটি ড্রুপাল 8 এ সঠিকভাবে পেতে কয়েকটি ছোটখাটো পরিবর্তন প্রয়োজন, সুতরাং এখানে একই উত্তরটি বেশ কার্যকর, তবে আপনার ড্রুপাল 8 থিমের জন্য উপযুক্ত।

/**
 * Implements hook_form_alter
 */
function THEME_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  add_placeholders($form);
}


/**
 * Add placeholders to suitable form elements -> textfield, password, email, textarea
 */
function add_placeholders(&$element) {
  if(isset($element['#type']) && in_array($element['#type'], ['textfield', 'password', 'email', 'textarea'])) {
    $element['#attributes']['placeholder'] = $element['#title'];
  }
  foreach(\Drupal\Core\Render\Element::children($element) as $key) {
    add_placeholders($element[$key]);
  }
}

0

আপনি যদি কোনও ফর্ম উদাহরণ লক্ষ্য করতে চান তবে সরাসরি hook_for_FORM_ID_alter ব্যবহার করুন। শর্তসাপেক্ষ ব্যবহারের চেয়ে পরিপাটি হতে পারে। শুধুমাত্র অনুসন্ধান ফর্ম ব্লক দৃষ্টান্ত লক্ষ্যমাত্রার জন্য আমার সমাধান।

function eyecare_form_search_block_form_alter(&$form, $form_state) {
  $form['keys']['#attributes']['placeholder'] = t('Search');
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.