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


9

এটি আমাকে কিছুক্ষণের জন্য ঝামেলা করে চলেছে .. যখন আমি গ্রুপ শ্রোতার ক্ষেত্রের মতো ক্ষেত্রগুলি বা কোনও ফর্ম থেকে প্রকাশের সেটিংটি আড়াল করার চেষ্টা করি, তখন বৈধতার ভিত্তিতে ফর্ম এই উভয় ক্ষেত্রকে নাল মান হিসাবে সেট করে, যদিও ডিফল্ট মান হিসাবে সঠিকভাবে ঘোষণা করা হয়েছে।

আমি অদৃশ্য, # অ্যাক্সেস, আনসেট লুকানো কিছুই কাজ করার চেষ্টা করেছি! এটি অত্যন্ত সমস্যাজনক কারণ আমার বর্তমান প্রকল্পের জন্য ব্যবহারকারীরা তখন তাদের প্রোফাইলের কেবলমাত্র ছোট বিটগুলি সম্পাদনা করতে পারে, উদাহরণস্বরূপ কেবল ঠিকানা বা চিত্র, তাই যদি আমি গোষ্ঠী শ্রোতাদের আড়াল করি তবে ব্যবহারকারী তার প্রত্যেকটি গ্রুপের বাইরে থেকে লাথি মারবে if সম্পাদনা করুন।

আমি এই ক্ষেত্রটি লুকানোর জন্য নীচের কোডটি ব্যবহার করে তাদের ব্যবহারকারীকে রেখেছি while

$variables['user_edit_about']['group_audience']= $temp['group_audience'];       
$variables['user_edit_about']['group_audience']['#prefix'] = '<div style="display:none;">';
$variables['user_edit_about']['group_audience']['#suffix'] = '</div>';

কেউ কি এটি অর্জনের আরও ভাল উপায়ের কথা চিন্তা করতে পারে?

ধন্যবাদ


এই উত্তরটি সঠিক নয় কারণ ব্যবহার এখনও
ডিওএম

উত্তর:


6

সম্পাদনা:

ঠিক আছে আমি এটি খুঁজে বের করতে। এটি আপনার কাস্টম মডিউলে রাখুন:

function example_form_alter(&$form, &$form_state, $form_id) {
    if($form_id == 'story_node_form') {
        $form['title']['#value'] = 'hot stuff';
        $form['title']['#access'] = FALSE;

    }
}

এটি গল্পের নোডের শিরোনামটি 'হট স্টাফ' এ সেট করবে এবং এটি পৃষ্ঠাতে রেন্ডার হবে না কারণ # অ্যাক্সেস = ফলস;

আপনি হুক_ফর্ম_ল্টার () এর মতো আরও বেশি গ্রানুলারিটি নিয়ন্ত্রণ যুক্ত করতে পারেন

  global $user;

  // Check to see if $user has does not have the administrator role.
  if (!in_array('administrator', array_values($user->roles))) {
    $form['title']['#access'] = FALSE;
  }

এটি ড্রুপাল 6 এবং 7 এর জন্য কাজ করে।

পুরানো উত্তর (উপেক্ষা):

আমি এই জাতীয় কিছু করার পরে কিছুক্ষণ হয়ে গেছে, তাই আমার এটি ভুল হতে পারে। আপনি যদি [#value]কোনও ফর্ম আইটেমটি সেট করেন তবে এটি ফর্মটিতে দৃশ্যমান হবে না।

আমি এটি hook_form_alter()কাস্টম মডিউলে ড্রুপাল 6-এ করেছি । আমি জানি না এটি ড্রুপাল 7 এ কাজ করবে কিনা এবং আমি জানি না আপনি এটি একটি প্রিপ্রোসেস ফাংশনে করতে পারেন কিনা


আপনার উত্তরের জন্য আপনাকে ধন্যবাদ, যদিও দুর্ভাগ্যক্রমে এটি আমার ক্ষেত্রে কাজ করে নি, ফর্ম ক্ষেত্রগুলিতে ইতিমধ্যে একটি # মূল্য প্রাক দায়ের করা হয়েছে কারণ তারা ফর্মগুলি সম্পাদনা করছেন
রেশমএডমিন

@ সিলকএডমিন দয়া করে নতুন সম্পাদনাগুলি দেখুন
iStryker

আশেপাশে খোঁড়াখুঁড়ি করতে সময় দেওয়ার জন্য ধন্যবাদ স্ট্রাইকার, যদিও আপনার উপরের প্রযুক্তিবিদ কাজটি ক্ষেত্রগুলি লুকাতে দেখে মনে হচ্ছে ডিফল্ট মানটি জমা দেওয়ার ক্ষেত্রেও বিবেচনায় নেওয়া হয়নি। সুতরাং আমি ব্যবহারকারীর সাথে প্রতিটি প্রোফাইল সম্পাদনায় এখনও তাদের গ্রুপ থেকে বের করে দেওয়া শেষ করেছি। এখনও অবধি কেবলমাত্র # প্রাকসিকৃত # প্রত্যয় কৌশলটি এটিকে স্বাভাবিকভাবে আচরণ করবে বলে মনে হয়।
সিল্কএডমিন

do $ ফর্ম ['শিরোনাম'] [['# মান'] = $ ফর্ম ['শিরোনাম'] ['#
ডিফল্ট_মূল্য

5

আপনি কেবলমাত্র ফর্ম উপাদানটিতে 'এলিমেন্ট-লুকানো' সিএসএস ক্লাস যুক্ত করতে পারেন

$form['user_edit_about']['group_audience']['#attributes']['class'][] = 'element-hidden';

আইস্রিটেকার আগে যেমন উল্লেখ করেছিলেন, তখনও ডিওএম ম্যানিপুলেশনের মাধ্যমে মান পরিবর্তন করা সম্ভব হবে। যাইহোক, এটি একটি ফর্ম ক্ষেত্র (বা অন্য কোনও রেন্ডার উপাদান) রক্ষার একটি দুর্দান্ত, সহজ উপায়। element-hiddenক্লাসে সংজ্ঞায়িত করা হয় system.base.css


বাডি, তুমি আমাকে বাঁচিয়েছ ধন্যবাদ। অন্যান্য যে সমস্ত পদ্ধতি আমি দেখেছি সেগুলি ফর্মটিতে উপাদানগুলি আউটপুট দেয় না। আমার ক্ষেত্রে, আমি একটি অবদানের মডিউলে ফর্ম উপাদানগুলি গোপন করতে চাই যা প্রত্যাশা করে যে এই উপাদানগুলি ফর্মটিতে রয়েছে অন্যথায় এটি সঠিকভাবে কাজ করতে ব্যর্থ হয়। আপনার সিএসএস ফিক্স অযাচিত উপাদানগুলি লুকিয়ে রাখে তবে সমস্ত কিছু এখনও কাজ করে। এটি "হ্যাকার-প্রুফ" নয় এবং এটি যখন তখনই কাজ করে যখন আপনাকে বিশ্বস্ত সম্পাদক ব্যবহারকারীদের কাছে উপস্থাপন করা ইন্টারফেসটি সহজতর করার জন্য ধন্যবাদ জানার জন্য ধন্যবাদ।
মারিও আওদ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.