ফিল্ড গ্রুপে কর্মক্ষেত্রে ফিল্ডগুলি যুক্ত করুন


15

আমি "ফিল্ড গ্রুপ" মডিউল ব্যবহার করেছি এবং ব্যাকএন্ডে কিছু গোষ্ঠী তৈরি করেছি। এখন আমি প্রোগ্রামগুলিতে গ্রুপে একটি ক্ষেত্র যুক্ত করতে চাই। আমি এটা কিভাবে করবো.

আমি হুক_ফর্ম_ল্টারটি ব্যবহার করছি, আমি লক্ষ্য করেছি যে প্রতিটি ক্ষেত্রের একটি 'আনড্রিট্রিবিউট রয়েছে যার মধ্যে এটির ক্ষেত্রের গ্রুপটি তালিকাভুক্ত রয়েছে, তবে যদি এটি তৈরি এবং' আনড 'অ্যারে তৈরি করে এবং এতে কোনও ক্ষেত্রের গ্রুপের নাম যুক্ত করা হয়, এটি কাজ করে না ।

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


1
আপনি ফিল্ড_গ্রুপ এপিআই ব্যবহার করতে পারেন। চেকআউট hook_field_group_build_pre_render_alter () ( drupal.org/node/1017962 )
codeinthehole

উত্তর:


20

এটি কিছুটা পুরানো, তবে আমি একই জিনিসটি করতে চেয়েছিলাম এবং ওয়েবে কোনও উত্তর খুঁজে পাইনি। আমি নিজেই এটি সন্ধান করা শেষ।

ধরা যাক আপনি "গ্রুপ_প্রডাক্ট_ফিল্ডস" নামটি দিয়ে সিএমএস ইন্টারফেসের মাধ্যমে একটি ফিল্ড গ্রুপ তৈরি করেছেন। আপনি এই গোষ্ঠীতে কিছু ক্ষেত্র যুক্ত করেছেন।

এখন আপনার কাছে একটি নতুন ক্ষেত্র হুক_ফর্ম_ল্টারের মাধ্যমে প্রোগ্রামের মাধ্যমে ফর্মটিতে অন্তর্ভুক্ত হচ্ছে। আপনি সেই ক্ষেত্রটি "গ্রুপ_প্রডक्ट_ফিল্ডস" এ যুক্ত করতে চান। ক্ষেত্রটি কী হতে পারে তার একটি উদাহরণ এখানে দেওয়া হয়েছে:

$form['new_product_field'] = array(
  '#type' => 'textfield',
  '#title' => t('New product field'),
  '#description' => t('Description for this new product field'),
);

আপনাকে এখন যা করতে হবে তা হল ক্ষেত্র দলে নতুন ক্ষেত্রটি যুক্ত করা। এটি করতে হুক_ফর্ম_ল্টারে নীচের লাইনটি যুক্ত করুন। এটি এর ভিতরে যে কোনও জায়গায় স্থাপন করা যেতে পারে।

$form['#group_children']['new_product_field'] = 'group_product_fields';

এখানেই শেষ. আপনি চাইলে ক্ষেত্রের ওজন এটির মতো স্থিত করার জন্য সামঞ্জস্য করতে পারেন। তবে শেষ পর্যন্ত এটি সত্যিই সহজ। :)


এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, আইএমও।
মিঃসন্তা

6

প্রোগ্রামিকভাবে ফিল্ড গ্রুপে ক্ষেত্রগুলি যুক্ত করার পরে উদ্ধৃতি দেওয়া :

$groups = field_group_read_groups(array(
  'entity_type' => 'node',
  'bundle'      => 'article',
  'mode'   => 'full'
));
$your_group = $groups['node']['article']['form']['group_your_group'];
$your_group->children[] = 'field_your_new_field';
field_group_group_save($your_group);

3
আমি ফর্মটি পরিবর্তন করতে চাই!
এস এ মালেক

3
তাহলে আমি দেখতে পাচ্ছি না আপনি কেন ফিল্ড গ্রুপ মডিউল ব্যবহার করতে চান? কেবলমাত্র একটি ফিল্ডসেট (গুলি) সংজ্ঞায়িত করুন এবং আপনার ক্ষেত্রগুলিকে সেখানে সরান। উদাহরণস্বরূপ: drupal.stackexchange.com/questions/4049/…
ম্যাকিয়েজ জেডাডজাজ

আমরা ব্যবহার করতে পারি 'mode' => 'form'বা এর 'mode' => 'default'পরিবর্তে 'mode' => 'full'বা কেবল বাদ দিতে পারি mode। যে কোনও ভিউ_মোড_নাম, ধন্যবাদ @ মাইক ফ্যাশ
গ্রেসম্যান

এটি ক্ষেত্রের সংজ্ঞাগুলি পুনরায় সংজ্ঞায়নের জন্য একটি ফর্ম_ল্টার না করার উপায় সরবরাহ করে - ওপি যা জিজ্ঞাসা করছে তা নয়।
অ্যারোনবাউমন

1

কীভাবে এটি আপনার পক্ষে কাজ করেছে তা নিশ্চিত নয়। কারণ অ্যারে কী নামটি অবশ্যই ডেটাবেস ক্ষেত্রের নামের সাথে মিলবে। এবং তারা:

| সত্তা_প্রকার | varchar (32)
| বান্ডিল | varchar (128)

| মোড | varchar (128)

এটি কাজ করতে আমাকে নিম্নলিখিত ফর্ম্যাটটি ব্যবহার করতে হবে। আমি যদি এখানে কিছু নির্বোধ কাজ করছি তা আমাকে জানান।

$groups = field_group_read_groups(array(
  'entity_type' => 'node',
  'bundle' => 'bundle type',
  'mode' => 'view_mode_name'));

1

হুক_ফিল্ড_গ্রুপ_বিল্ড_প্রিয়ার_রেন্ডার_াল্টার () দেখুন।

এটি আপনাকে আপনার গ্রুপগুলির কাঠামো প্রোগ্রামগতভাবে পরিবর্তন করার সুযোগ দেয় provides

উদাহরণস্বরূপ, ক্ষেত্র "example_field" সরানো মধ্যে রুট ফর্ম উপাদান থেকে গ্রুপ "group_example":

function EXAMPLE_forms_field_group_build_pre_render_alter(&$form) {
  if (example_condition()) {
    $form['group_example'] = $form['group_example']['example_field'];
    unset($form['example_field']);
    // Further adjustments as necessary
  }
}

0

প্রথমে, আপনার ফিল্ড গ্রুপের মেশিনের নাম সিএমএস প্যানেলে সন্ধান করুন তারপরে আপনার ফর্মটি পরিবর্তন করুন

$form['#group_children']['FIELD_MACHINE_NAME'] = 'GROUP_MACHINE_NAME';

ইনস্ট্যান্টের জন্য, আমি User form field groupফিল্ড গ্রুপে একটি কাস্টম ফিল্ড মেল যুক্ত করেছি :

$form['#group_children']['mail'] = 'group_user_form_field_group';
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.