ড্রুপাল 8-এর জন্য, আমি একটি কাস্টম বৈধতা ফাংশন যুক্ত করতে সক্ষম হয়েছিল যা আসলে বিদ্যমান ত্রুটিগুলি পরীক্ষা করতে পারে এবং প্রতি কেস ভিত্তিতে ত্রুটির মার্কআপ পরিবর্তন করতে পারে। আমার ক্ষেত্রে, আমি কোনও সত্তা_আউটোকম্পলিট ফিল্ড থেকে ত্রুটি বার্তাটি পরিবর্তন করতে চেয়েছিলাম যা ব্যবহারকারীদের উল্লেখ করছে। যদি কোনও অবৈধ ব্যবহারকারীর যোগ করা হয়, তবে বৈধতা ত্রুটিটি পড়ল, "% নামের সাথে কোনও সত্তা নেই"। "সত্তা" শব্দের পরিবর্তে, আমি এটি ব্যবহারকারীর কাছে কম ভীতিজনক এবং সম্ভাব্য বিভ্রান্তিকর হওয়ার জন্য "ব্যবহারকারী" বলতে চাইতাম।
প্রথমত, আমি আমার বৈধতা ফাংশন যোগ করতে hook_for_alter () ব্যবহার করি:
/**
* Implements hook_form_alter().
*/
function my_module_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if (in_array($form_id, ['whatever_form_id_you_need_to_alter'])) {
// Add entity autocomplete custom form validation messages alter.
array_unshift($form['#validate'], 'my_module_custom_user_validate');
}
তারপরে, 'মাই_মডিউল_ কাস্টম_ইউজার_অালিডিয়েট' ফাংশনে:
/**
* Custom form validation handler that alters default validation.
* @param $form
* @param \Drupal\Core\Form\FormStateInterface $form_state
*/
function my_module_custom_user_validate(&$form, FormStateInterface $form_state) {
// Check for any errors on the form_state
$errors = $form_state->getErrors();
if ($errors) {
foreach ($errors as $error_key => $error_val) {
// Check to see if the error is related to the desired field:
if (strpos($error_key, 'the_entity_reference_field_machine_name') !== FALSE) {
// Check for the word 'entities', which I want to replace
if (strpos($error_val->getUntranslatedString(), 'entities') == TRUE) {
// Get the original args to pass into the new message
$original_args = $error_val->getArguments();
// Re-construct the error
$error_val->__construct("There are no users matching the name %value", $original_args);
}
}
}
}
}
আশাকরি এটা সাহায্য করবে!