অনুচ্ছেদ ক্ষেত্রের মধ্যে থাকা ফর্ম ক্ষেত্রগুলির আচরণকে আমি কীভাবে পরিবর্তন করব?


18

ড্রুপাল 8-তে অনুচ্ছেদ মডিউলটি ব্যবহার করে , আমি অনুচ্ছেদের ক্ষেত্রের মধ্যে থাকা ফর্ম ক্ষেত্রগুলির আচরণের পরিবর্তন করার চেষ্টা করছি। এটি তাই আমি এজ্যাক্স কলব্যাকের মতো আচরণ যুক্ত করতে পারি, রাজ্যগুলি ব্যবহার করে অন্যান্য ক্ষেত্রগুলি লুকান etc.

আমি এই ফাংশনটি ব্যবহার করে অনুচ্ছেদে প্যারেন্ট ফিল্ডটি অ্যাক্সেস করতে পারি:

function hook_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) { 
}

তবে আমি অনুচ্ছেদে থাকা ক্ষেত্রগুলিতে কীভাবে অ্যাক্সেস করব?

আমি চেষ্টা করেছি hook_field_widget_form_alterকিন্তু কোন ফল হয় নি।

আমি এটা কিভাবে করবো?

দ্রষ্টব্য: দ্রুপাল বিকাশে আমি এখনও বেশ নতুন।


আপনার পরিবর্তনের জন্য এটি চেষ্টা করুন kint($form);এবং kint($form_id);এটি হুক আইডি পরিবর্তনের জন্য আপনাকে আইডি দেবে এবং তারপরে এটি আপনাকে কী পরিবর্তন করতে চায় তার জন্য আপনাকে অ্যারে পাথ দিতে হবে।
ড্যানি ইংল্যান্ডার

উত্তর:


14

অনুচ্ছেদে ^ 1.3 হিসাবে আপনি হুক_ফিল্ড_উইজেট_উইডজিইT_TYPE_form_alter () ব্যবহার করতে পারেন (আমি 8.2 সংস্করণটি সংযুক্ত করেছি কারণ হুক ব্যবহারের বিষয়ে একটি ভাল মন্তব্য রয়েছে)।

আপনি নীচের উদাহরণটি দেখতে পারেন modules/contrib/paragraphs/tests/modules/paragraphs_test/paragraphs_test.module

/**  
 * Implements hook_field_widget_WIDGET_TYPE_form_alter().  
 */  
function paragraphs_test_field_widget_entity_reference_paragraphs_form_alter(&$element, &$form_state, $context) {
  if ($element['#paragraph_type'] == 'altered_paragraph') {
    $element['subform']['field_text']['widget'][0]['#title'] = 'Altered title';
  }
}

6
মনে রাখবেন যে আপনি যদি "অনুচ্ছেদ ক্লাসিক" এর পরিবর্তে "অনুচ্ছেদ এক্সপেরিমেন্টাল" উইজেট ব্যবহার করছেন তবে উইজেটের ধরণটি ঠিক paragraphsতার পরিবর্তে entity_reference_paragraphs
ডালিন

1
কিছু দরকারী জিনিস (কারণ এই হুকগুলি ডিবাগ করা অসম্ভব): /* @var $paragraph \Drupal\paragraphs\Entity\Paragraph */ $paragraph = $form_state->get('paragraph'); $delta = $context['delta'];
ডালিন

1

hook_form_alterআপনি ব্যবহার করে ফর্মের যে কোনও কিছুই, এমনকি উইজেটগুলি থেকে আসা স্টাফকেও বদলাতে পারে। এটি সহজেই কিছুটা অগোছালো হয়ে উঠতে পারে এবং উইজেটগুলির সাথে ঘোরাঘুরি করার সময় এটি সহজেই ভেঙে যায়।

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

উইজেটগুলি টীকা সিস্টেম ব্যবহার করে, সুতরাং আপনাকে ক্লাসের উপরে মন্তব্য হিসাবে নাম, আইডি ইত্যাদি নির্ধারণ করতে হবে। সহজ উপায় হ'ল আসল উইজেটটি অনুলিপি করা এবং এটিকে নতুন নাম এবং আইডি দেওয়া, বাকিটি যেমন হওয়া দরকার তেমন হওয়া উচিত।

ড্রুপালকে নতুন প্লাগইনটি সন্ধান করতে ক্যাপ সাফ করার কথা মনে রাখবেন।


-1

আছে অনুচ্ছেদ ইস্যু সারিতে এই জন্য একটি প্যাচ

এটি নতুন হুক যোগ করেছে:

hook_form_paragraphs_subform_alter()
hook_form_paragraphs_subform_TYPE_alter()
hook_form_paragraphs_subform_WIDGET_alter()
hook_form_paragraphs_subform_WIDGET_TYPE_alter()

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