আমি কীভাবে ফর্ম জমা হ্যান্ডলারটি পরিবর্তন করব?


16

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

function hook_form_alter($form, $form_state, $form_id) {
  $form['#submit'] = 'my_custom_submission_function';
}

তবে জমা দেওয়ার অগ্রগতিতে আমাকে আরও যত্ন নিতে হবে বলে এটি একটি ভাল ধারণা নয়। আমার শুধু কিছু চরিত্র বদলাতে হবে। এটি করার কোনও হুক আছে? সমাধানগুলি কি?

উত্তর:


22

$form['#submit']ফর্ম একটি অ্যারের জমা হ্যান্ডলার জমা দিন। আপনি যে কোডটি দিয়েছিলেন তা দিয়ে আপনি এটি কেবল নিজের যুক্ত করে ওভাররাইট করছেন। ফলাফল পেতে আপনি চান আপনার জমা হ্যান্ডলারটি অ্যারের মধ্যে প্রথম উপাদান হিসাবে যুক্ত করা উচিত:

array_unshift($form['#submit'], 'mymodule_custom_submission');

সঠিক আকারগুলিতে সঠিক মানগুলি পাওয়া এবং কিছু অক্ষর প্রতিস্থাপন করা সম্ভবত এটি নিজের মধ্যে একটি বড় সমস্যা। আপনি কিছু ভঙ্গ করবেন না তা নিশ্চিত করতে আপনি যে ফর্মগুলি / ক্ষেত্রগুলি পরিবর্তন করতে হবে তা সংকুচিত করতে পারেন।


2

সম্ভবত দ্রুপালের পরামর্শ অনুসারে জমা দেওয়ার পরিবর্তে বৈধতার সময় এই পরিবর্তনগুলি সম্পাদন করা ভাল ( https://api.drupal.org/api/drupal/includes!form.inc/function/form_set_value/7 এ form_set_value ফাংশন দেখুন )।

সুতরাং আপনার হুক_ফর্ম_ল্টারে আপনি যদি এটি পছন্দ করেন তবে বিদ্যমান বৈধতা কার্যকারিতা শেষে এটি যুক্ত করতে পারেন:

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