নির্বাচন করা ফর্ম ক্ষেত্রের জন্য একটি বিকল্প অক্ষম করুন


9

নির্বাচন ফর্ম ক্ষেত্রে আমি কীভাবে একটি বিকল্প অক্ষম করব?

$form['feed'] = array(
  '#type' => 'select', 
  '#title' => t('Display of XML feed items'), 
  '#options' => array(
    'title' => t('Titles only'), 
    'teaser' => t('Titles plus teaser'), 
    'fulltext' => t('Full text'),
  ),
  '#description' => t('Global setting for the length of XML feed items that are output by default.'),
);

আমি কীভাবে অক্ষম করতে পারি, উদাহরণস্বরূপ, "কেবলমাত্র শিরোনাম" বিকল্পটি?


এটি কীভাবে করা যায় তা জানতে
পেরে

উত্তর:


6

একটি "নির্বাচন করুন" ফর্ম ক্ষেত্রের জন্য অপশনের নিষ্ক্রিয় এক একমাত্র উপায় ওভাররাইড করতে হয় theme_select () ফাংশন বাস্তবায়ন hook_theme_registry_alter ()

theme_select() নিম্নলিখিত কোডটি কার্যকর করে:

function theme_select($variables) {
  $element = $variables['element'];
  element_set_attributes($element, array('id', 'name', 'size'));
  _form_set_class($element, array('form-select'));

  return '<select' . drupal_attributes($element['#attributes']) . '>' . form_select_options($element) . '</select>';
}

আপনি যে ফাংশনটি প্রয়োগ করেছেন তার ফর্ম_সিলিট_প্লেশন () এর পরিবর্তে আপনার নিজের ফাংশনটি শুরু করা উচিত ।

যেহেতু theme_select()যে কোনও ড্রুপাল ফর্মে ব্যবহৃত প্রতিটি নির্বাচিত ক্ষেত্রের জন্য বলা হয়, আমি বরং আপনি যে ফর্ম ক্ষেত্রটি চান সেটি থেকে বিকল্পটি সরাতে হুক_ফর্ম_ল্টার () প্রয়োগ করার বিষয়টি বিবেচনা করব ।


6

একটি বিকল্প অক্ষম করা অর্জনের জন্য জটিল হতে পারে ( একটি নির্বাচিত ক্ষেত্রের একটি বিকল্প অক্ষম করতে form_alter ব্যবহার করে ) সুতরাং আমি বিকল্প হিসাবে অপ্টগ্রুপগুলিকে দেখার পরামর্শ দিচ্ছি । ড্রুপাল ফর্ম এপিআই ডকুমেন্টেশনটি এটি ব্যাখ্যা করে না তবে এপিআই বিকল্পগুলির জন্য নেস্টেড অ্যারেটিকে অনুমতি দেয়, ফর্ম_সিলিট_পশনগুলি () এবং <optgroup>অংশটি দেখুন।
আপনি এই কোডটি লিখতে পারেন:

$form['feed'] = array(
    '#type' => 'select', 
    '#title' => t('Display of XML feed items'), 
    '#options' => array(
        'Titles only' => array(, 
          'teaser' => t('Titles plus teaser'), 
          'fulltext' => t('Full text'),
        ),
        'Titles only 2' => array(, 
          'teaser2' => t('Titles plus teaser 2'), 
          'fulltext2' => t('Full text 2'),
        ),
    ),
    '#description' => t('Global setting for the length of XML feed items that are output by default.'),
);

কটাক্ষপাত আছে Drupal এর 6 ফর্ম এবং optgroup অ্যারে

সম্পাদনা করুন : স্পষ্ট করার জন্য এটি একটি বিকল্প এবং সরাসরি উত্তর নয়।


প্রশ্নটি বিকল্পগুলির মধ্যে একটিটি অক্ষম করার বিষয়ে, সেগুলি দলবদ্ধকরণ নয়।
kiamlaluno

আমি এটি বুঝতে পেরেছিলাম কিন্তু আমি ভেবেছিলাম অপ্টগ্রুপ একটি ভাল বিকল্প সরবরাহ করেছে।
tostinni

উজ্জ্বল! আমি ঠিক তাই খুঁজছিলাম, আপনাকে ধন্যবাদ !!!
uwe

3

আমি জানি না এবং স্বতন্ত্র বিকল্পটি অক্ষম করার কোনও উপায় খুঁজে পাইনি । দেখে মনে হচ্ছে তারা ড্রুপালের মধ্যে এই জাতীয় কিছু পাওয়ার চেষ্টা করছে। হতে পারে কিছু বিকল্প, আপনি যা চান তা সিএসএস দিয়ে করা সম্ভব ?:

$form['feed']['#attributes'] = array('class' => array('options-styles-class'));

অথবা, আপনি যদি মানগুলি একেবারে প্রদর্শন না করতে চান তবে আপনি সেগুলি আনসেট করতে পারেন

unset($form['feed']['#options']['title']);

3

আমি নিম্নলিখিত লাইন দিয়ে আমার কাজ পেয়েছিলাম

unset($form['field_name']['und']['#options'][1]);

যেখানে 1 হ'ল আইটেমের সূচক যা আপনি প্রদর্শিত হতে চান না।


এটি বিকল্পটি সরিয়ে দেয়। প্রশ্নটি বিকল্পটি অক্ষম করার বিষয়ে (এটিকে ধূসর দেখায়)।
কোয়েন

0

আপনি যে একক আইটেমটি শূন্যে অক্ষম করতে চান তা রূপান্তর করুন <optgroup>

পেশাদাররা:

  • hook_form_alterআপনার কাস্টম ফর্মটি তৈরি করার সময় এটি কোনও বা সরাসরি করা যেতে পারে , আপনার থিমটিতে কোনও theme_selectফাংশন বাস্তবায়নের দরকার নেই ।

কনস:

  • ফলস্বরূপ DOM এর value='title'সাথে মূলটির সাথে সম্পর্কিত বৈশিষ্ট্যটি উপস্থাপন করার কোনও উপায় নেই <option>
  • ওয়াইএমএমভি যদি আপনি এমন কোনও বিকল্প অক্ষম করার চেষ্টা করছেন যা ইতিমধ্যে একটি অপ্টগ্রুপের সাথে সম্পর্কিত। নেস্টেড অপ্টগ্রুপগুলি প্রকৃতপক্ষে কার্যকর হতে পারে তবে এটি অনির্ধারিত এবং নিশ্চিত নয়।

বাস্তবায়ন:

দ্রুপাল-এ অপ্টগ্রুপগুলি #optionsঅ্যারের অভ্যন্তরে কোনও key => valueজোড়া হিসাবে মান হিসাবে চিহ্নিত করা হয় যেখানে মানটি নিজেই একটি অ্যারে।

সুতরাং ওপির উদাহরণ থেকে আমরা মানটি t('Titles only')হয়ে ওঠার চেষ্টা করব keyএবং তারপরে মানটি একটি খালি অ্যারে হয়ে উঠব।

$form['feed'] = array(
  '#type' => 'select', 
  '#title' => t('Display of XML feed items'), 
  '#options' => array(
    t('Titles only') => array(), // This one becomes disabled as an empty optgroup
    'teaser' => t('Titles plus teaser'), 
    'fulltext' => t('Full text'),
  ),
  '#description' => t('Global setting for the length of XML feed items that are output by default.'),
);

ফলাফল এইচটিএমএল কিছু দেখতে হবে:

<form>
  <div>
    <label>Display of XML feed items</label>
    <select>
      <optgroup>Titles only</optgroup>
      <option value="teaser">Titles plus teaser</option>
      <option value="fulltext">Full text</option>
    </select>
  </div>
</form>

0

পুরো ক্ষেত্রটি অক্ষম করার জন্য, ব্যবহার করুন

$form['field_name']['#disabled']= TRUE;

নির্বাচন ক্ষেত্রে কোনও বিকল্প অক্ষম করার জন্য, ব্যবহার করুন

unset($form['field_name']['und']['#options'][1]);

কোথায়:

[' ক্ষেত্রের নাম '] আপনার ক্ষেত্রের নাম

[1] তালিকার বিকল্পের সূচক

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.