ব্যবহারকারীদের থেকে ত্রুটিগুলি লুকান তবে প্রশাসকে দেখান?


18

'প্রদর্শন করতে ত্রুটি বার্তা' এর অধীনে আমি ত্রুটিগুলি আড়াল করতে পারি (উত্পাদন সাইটের জন্য প্রস্তাবিত হিসাবে)। তবে একটি নির্দিষ্ট ভূমিকা ব্যতীত সবার জন্য ত্রুটিগুলি আড়াল করা সম্ভব?


হ্যাঁ, এটির জন্য কয়েকটি মডিউল রয়েছে। তবে আপনি যা পরামর্শ দিচ্ছেন সেগুলি ফর্ম ত্রুটিগুলিও লুকিয়ে রাখে, যেমনটি আমি নীচে বলেছি।
পুনরায় প্রতিস্থাপন

বৈশিষ্ট্য অনুরোধ এখানে drupal.org/node/2743119
giorgio79

উত্তর:


18

উপস্থাপনা: " সাইট ব্যবহারকারীদের জন্য আমি কীভাবে একটি সতর্কতা বা ত্রুটি বার্তাটি দমন করব? " এর উত্তর হিসাবে এই পোস্টটি প্রথম পোস্ট করা হয়েছিল ।

বার্তা মডিউল অক্ষম করুন

আপনি এটির জন্য বার্তা অক্ষম করুন মডিউলটি ব্যবহার করতে পারেন । এখানে তার প্রকল্প পৃষ্ঠা থেকে একটি উদ্ধৃতি দেওয়া হয়েছে:

শেষ ব্যবহারকারীদের দেখানো নির্দিষ্ট বার্তাগুলি অক্ষম করার জন্য কোনও সাইটের মালিককে বিকল্প সরবরাহ করে। Drupal_set_message দ্বারা প্রদত্ত কোর ড্রুপাল মেসেজ সিস্টেম মডিউলগুলি শেষ ব্যবহারকারীদের কাছে বার্তা প্রেরণের জন্য এক দুর্দান্ত উপায়। তবে সমস্ত ড্রুপাল সাইটের মালিকরা তাদের ব্যবহারকারীদের জন্য ড্রুপাল কোর এবং সমস্ত মডিউল দ্বারা প্রেরিত সমস্ত বার্তা প্রদর্শন করতে আগ্রহী নয়। এই মডিউলটি সাইট প্রশাসকদের শেষ ব্যবহারকারীদের দেখানো বার্তাগুলি ফিল্টার করার পক্ষে যুক্তিসঙ্গত শক্তিশালী উপায় দেয়।

এর কয়েকটি বৈশিষ্ট্য হ'ল:

  • সম্পূর্ণ পাঠ্যের স্ট্রিংয়ের সাথে মেলে এমন বার্তাগুলি ফিল্টার করুন।
  • একটি নিয়মিত প্রকাশের সাথে মেলে এমন বার্তাগুলি ফিল্টার করুন।
  • প্রদত্ত প্রকারের সমস্ত বার্তাকে যে কোনও ভূমিকা থেকে বিশেষভাবে লুকানোর অনুমতি।
  • নির্দিষ্ট ব্যবহারকারীদের জন্য সমস্ত ফিল্টারিং অক্ষম করুন।
  • নির্দিষ্ট পাথের জন্য সমস্ত ফিল্টারিং অক্ষম করুন।
  • শুধুমাত্র নির্দিষ্ট পাথের জন্য ফিল্টারিং প্রয়োগ করুন।
  • শেষ ব্যবহারকারীদের না দেখিয়ে এইচটিএমএলতে বার্তা পাওয়ার জন্য ডিবাগ সিস্টেম

ড্রুপাল 6, দ্রুপাল 7 বা দ্রুপাল 8 এর জন্য উপলব্ধ।

নিয়মিত অভিব্যক্তি ব্যবহার সম্পর্কে

আপনি যদি এর ' নিয়মিত অভিব্যক্তি ' বৈশিষ্ট্যটি ব্যবহার করে থাকেন তবে আপনাকে অবশ্যই তা নিশ্চিত করতে হবে যে আপনি যে নিয়মিত ভাবটি ব্যবহার করতে চান তা যে আপনাকে আটকাতে চাইছে ত্রুটি বার্তাটি "ক্যাচ" করে, যেমন সম্প্রদায়ের ডকুমেন্টেশনেও ব্যাখ্যা করা হয়েছে ।

" পরামর্শের নীচে : এটিকে সহজ রাখুন " "পৃষ্ঠায় একটি দুর্দান্ত নমুনা রয়েছে, যা দেখতে এটির মতো দেখাচ্ছে:

সচেতন থাকুন যে এমন কিছু যা খুব সোজাসুজি মত প্রকাশিত হয়:

Notice: Undefined index: field_txt_student_id in ctools_entity_form_field_content_type_render() (line 96 of [...]entity_form_field.inc).

এতে প্রত্যাশার চেয়ে অনেক বেশি অদেখা অক্ষর রয়েছে:

<em class="placeholder">Notice</em>: Undefined index: field_txt_student_id in <em class="placeholder">ctools_entity_form_field_content_type_render()</em> (line <em class="placeholder">96</em> of <em class="placeholder">[...]entity_form_field.inc</em>).

সুতরাং কেবল একটি সহজ "যে কোনও চরিত্র" রেজেক্স: "+ +" দিয়ে গ্রেপের মাংস মোড়ানো করুন:

.+Notice.+Undefined index:.+ctools_entity_form_field_content_type_render.+entity_form_field.inc.+

সুতরাং একটি সঠিক বার্তাটি নিয়ে আসার জন্য "ক্লু "টি হ'ল আপনি যে ত্রুটি বার্তাটি ধরতে চান সেটি সঙ্কুচিত করা এবং" + + "অক্ষরগুলি যেখানে উপযুক্ত সেখানে স্থাপন করা ।

সঙ্কুচিত হওয়ার বিষয়ে কথা বলুন, নোট করুন যে field_txt_student_idনিয়মিত প্রকাশেও বাদ দেওয়া হয়েছে (এটি ক্ষেত্রের নামের উপর নির্ভর করে না) make

উদাহরণ

অন্য উদাহরণ হিসাবে, ধরে নিন আপনি এই ত্রুটি বার্তাটি ধরতে চান:

PDOException: dblog_watchdog () এ (hhome/dbuser/public_html/yoursitesname.com/modules/dblog/dblog.module এর 160 লাইন)।

এক্ষেত্রে একটি সম্ভাব্য নিয়মিত অভিব্যক্তিটি এর মতো দেখতে হবে:

.+PDOException.+in dblog_watchdog().+(line 160 of.+/modules/dblog/dblog.module).+

নোট করুন আমি কীভাবে ইচ্ছাকৃতভাবে পথের কিছু অংশ আগে অন্তর্ভুক্ত করি নি /modules/dblog/dblog.module(যাতে এটি অন্য কোনও সাইটে ব্যবহার করা যেতে পারে যেখানে খুব একই ত্রুটি দেখা দেয় ...)।

এছাড়াও নোট করুন যে আপনাকে এটির কিছু 160অংশ হ্যাঁ বা কোনও অংশে অন্তর্ভুক্ত করতে হবে না: যদি মডিউলটি কিছুটা পরিবর্তন করে যাতে ত্রুটি বার্তায় এটি (যেমন) লাইন হয়ে যায় 161, আপনার ত্রুটি আর বাধা দেওয়া হবে না। এটি এড়াতে, এর 160 অংশ বাদ দিন, যদি আপনি এটি পছন্দ করেন তবে (ব্যক্তিগতভাবে আমি প্রথমে ত্রুটিটি ফিরে আসার আগে দেখতে চাই এবং তারপরে আমার নিয়মিত অভিব্যক্তিটি পুনরায় অভিযোজিত করব)।

যদি আপনার নিয়মিত প্রকাশটি প্রথমে কাজ না করে (= বার্তাটি এখনও উপস্থিত থাকে), তবে এটি হতে পারে কারণ নিয়মিত এক্সপ্রেশনটিতে কিছু টাইপ রয়েছে। এই জাতীয় টাইপটি চিহ্নিত করতে প্রথমে কিছুটা নিয়ন্ত্রিত নিয়মিত অভিব্যক্তি দিয়ে চেষ্টা করুন, এমন কি কিছু চেষ্টা করার পরেও ( সমস্ত বার্তাগুলি সম্বলিত PDOExceptionএবং সমস্ত বার্তাগুলি ধারণ করার জন্য dblog_watchdog):

.+PDOException.+dblog_watchdog.+

বা এমনকি এটির মতো ( সমস্ত বার্তাগুলি ধারণ করে ধরতে PDOException):

.+PDOException.+

এই শেষ 2 টি এক্সপ্রেশন সম্ভবত খুব বেশি বার্তাগুলি দমন করবে, তাই আপনি এটিকে আপনার পরে থাকা এককটিতে সংকুচিত করতে চান।

অস্থির বিকল্প

রয়েছে উন্নততর বার্তা বিকল্প হিসেবে মডিউল। তবে, ডি 7 এর জন্য (যা এই প্রশ্নটি সম্পর্কে রয়েছে), এটির কেবল একটি আলফা সংস্করণ রয়েছে।


6

আপনি in_array () ফাংশনটি ব্যবহার করে ব্যবহারকারীর ভূমিকাটি পরীক্ষা করতে পারেন। আপনার টেমপ্লেটে:


<?php global $user; ?>
<?php if (!in_array('YOUR_ROLE', $user->roles)): ?>
  <?php if ($messages): ?>
    <div id="messages">
      <?php print $messages; ?>
    </div> </div> 
  <?php endif; ?>
<?php endif; ?>

অথবা আপনি এটি আপনার প্রিপ্রোসেস ফাংশনে করতে পারেন (নিশ্চিত নয় যে বার্তা ভেরিয়েবলটি সঠিকভাবে বলা হয়েছে তবে এটি আপনাকে একটি ধারণা দিতে পারে)


function MYTHEME_preprocess_page(&$variables, $hook) {
  global $user;
  if (!in_array('YOUR_ROLE', $user->roles)){
    // This has to be checked, could be something similar.
    unset($variables['page']['content']['messages']);
  }
}


আমার বোধগম্যতা হল আমি <? Php মুদ্রণ $ বার্তাগুলি গোপন করতে পারি না; ?> ব্যবহারকারীদের কাছ থেকে এটি এরোর দেখায় যে ব্যবহারকারীদের ডাটাবেস টাইপের ত্রুটিগুলি যেমন দেখতে পাওয়া উচিত, যেমন আপনি যদি নোড তৈরি করার চেষ্টা করেন এবং বাধ্যতামূলক ক্ষেত্রটি রেখে যান। ধন্যবাদ
ইভানস

1
আপনি ঠিক বলেছেন, ত্রুটি বার্তাগুলি কীভাবে ডিফল্ট বার্তাগুলির চেয়ে আলাদা এবং এটির জন্য একটি হুক_পারমিশন তৈরি করার চেষ্টা করতে পারে। শুভকামনা!
JurgenR

4

আসলে এটি সত্যিই যোগ্য নয়।

আপনি ব্যবহারকারী বা ভূমিকাগুলির জন্য সমস্ত বার্তা গোপন করতে পারেন তবে মূল সমস্যাটি ত্রুটিগুলিকে শ্রেণিবদ্ধ করার উপায়ের মধ্যেই রয়েছে।

একটি ফর্ম ত্রুটি বার্তা ফাংশনটির জন্য একটি ডাটাবেস ব্যতিক্রমের সমান, তাই যদি আপনি ত্রুটিগুলি আড়াল করে থাকেন তবে আপনি একটি মন্তব্য ফর্মের ত্রুটি বার্তাগুলিও লুকিয়ে রাখেন।

আমি কারওর জন্য আমাকে ভুল প্রমাণ করতে পছন্দ করব কারণ আমি পিএইচপি বিজ্ঞপ্তিগুলি গোপন করার জন্য কিন্তু একই সাথে ফর্ম নোটিশগুলি প্রদর্শন করতে সক্ষম হইনি।


4

একটি দ্রুপাল ওয়েবসাইট থেকে বিজ্ঞপ্তি সরাতে দয়া করে নীচের পদক্ষেপগুলি অনুসরণ করুন:

  • অ্যাডমিন / কনফিগারেশন / উন্নয়ন / লগিং এ যান।
  • আপনার তিনটি পছন্দ রয়েছে:
    1. None সমস্ত ত্রুটি প্রতিবেদন অক্ষম করবে।
    2. Errors and warnings সবচেয়ে গুরুতর সমস্যা প্রদর্শন করবে।
    3. All messages সমস্ত সমস্যা প্রদর্শন করবে এবং সম্ভবত এটি কেবল বিকাশকারীদের জন্য কার্যকর।

কোডের মাধ্যমে নোটিশ এবং ত্রুটি বার্তা অক্ষম করার অন্য উপায়। settings.phpফাইলটিতে নিম্নলিখিত কোড যুক্ত করুন:

$conf['error_level']=0;

আপনি এই নির্দেশাবলী অনুসরণ করে শুধুমাত্র ত্রুটিগুলি লগ করতে ড্রুপালকে কনফিগার করতে পারেন: Administration > Configuration > Development > Logging and errorsসরাসরি যান বা যান /admin/config/development/loggingএবং "প্রদর্শন করতে ত্রুটি বার্তা" কারও কাছে সেট করে না । এরপরেও ড্রুপাল ত্রুটিগুলি লগ করে তবে তাদের ব্যবহারকারীর কাছে প্রদর্শন করে না।

আপনার যদি আরও নিয়ন্ত্রণের প্রয়োজন হয় তবে Disable Messagesমডিউলটি ব্যবহার করুন ।


এটি ড্রুপাল_সেট_মেসেজ সম্পর্কে, ত্রুটি বার্তা নয়।
এনজেপি

@njp - তারা সবাই $ বার্তায় ঘুরে বেড়ায়। আপনার টেম্পলেট পরীক্ষা করুন।
লেম্যানেক্স

3

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


বার্তাগুলি প্রদর্শনের জন্য আরও ভাল বার্তাগুলির কোনও ভূমিকা ভিত্তিক কনফিগারেশন নেই, কেবলমাত্র মডিউলগুলি প্রকার বার্তাগুলি দেখানোর জন্য
পুনরায় প্রতিবেদক

2

আপনি আপনার থিমটিতে এই কোডটি মন্তব্য করতে পারেন

<?php if ($messages): ?>
    <div id="messages"><div class="section clearfix">
      <?php print $messages; ?>
    </div></div> <!-- /.section, /#messages -->
  <?php endif; ?>

বা status_messages থিম উপাদান এটি পরিবেশন করে আপনি টেম্পলেট.এফপিতে নিজের থিম ফাংশনটি লিখতে পারেন

MYTHEME_status_messages(&$variables){}

এটি শুধুমাত্র লক্ষ্য এবং সতর্কতা ত্রুটির ক্ষেত্রেই প্রভাব ফেলতে পারে


1
তবে $messagesবিভাগটি যদি মন্তব্য করা হয় তবে এটি প্রশাসকদের পক্ষেও প্রদর্শিত হবে না।
গুডএসপিএনডি 3

আমার বোধগম্যতা হল আমি <? Php মুদ্রণ $ বার্তাগুলি গোপন করতে পারি না; ?> ব্যবহারকারীদের কাছ থেকে এটি এরোর দেখায় যে ব্যবহারকারীদের ডাটাবেস টাইপের ত্রুটিগুলি যেমন দেখতে পাওয়া উচিত, যেমন আপনি যদি নোড তৈরি করার চেষ্টা করেন এবং বাধ্যতামূলক ক্ষেত্রটি রেখে যান। ধন্যবাদ
ইভানস

api.drupal.org/api/drupal/includes!theme.inc/function/… এখানে রেন্ডারিংয়ের জন্য কোর কীভাবে একটি সতর্কতা বার্তা প্রস্তুত করে আপনি এই লজিকটি অনুলিপি করতে পারেন এবং আপনার থিম টেমপ্লেট.এফপি ফাইলটিতে mythemename_status_messages () এ নিজের যুক্তি যুক্ত করতে পারেন
এপ্রাইভাল চমকপ্রদ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.