কোনও ক্ষেত্র খালি নয় তা যাচাই করুন


15

নোড টেমপ্লেটে কোনও ক্ষেত্র খালি আছে কিনা তা যাচাই করার জন্য সেরা পদ্ধতিটি কী।

নোডে - উদাহরণ.html.twig আমরা "সামগ্রী" ভেরিয়েবল ব্যবহার করতে পারি।

আমি কোনও ব্লক চেক করার মতো চেক ব্যবহার করতে পারি না

{% if content.field_example  %}

আমি এরকম কিছু ব্যবহার করতে পারি:

{% if content.field_example['#object'] is defined  %}

তবে সেরা পদ্ধতি কী?


1
হুক_প্রসেস ব্যবহার করুন এবং প্রোগ্রামগতভাবে পরীক্ষা করুন, সম্ভবত সূচক ভেরিয়েবল যুক্ত করুন। নাহলে কি 4k4 লিখেছেন।

উত্তর:


21

যেমন আমি আরও লিখেছি আপনি নোড টেমপ্লেটগুলিতে কোনও সত্তা রেফারেন্স থেকে ক্ষেত্রগুলি কীভাবে রেন্ডার করতে পারেন? [দ্রুপাল ৮] , সামগ্রী হ'ল একটি রেন্ডার অ্যারে যা প্রদর্শনের জন্য প্রস্তুত ডেটা থাকে।

আপনি যদি কিছু পরীক্ষা করতে বা তুলনা করতে চান তবে পরিবর্তে মানগুলি ব্যবহার করুন, যা নোড অবজেক্টে উপলব্ধ।

{% if node.field_example.value %}

নোট করুন যে সম্পত্তি ক্ষেত্রের ধরণের উপর নির্ভর করে। যদি এটি একটি রেফারেন্স ক্ষেত্র হয় তবে আপনার পরিবর্তে লক্ষ্য_আইড ব্যবহার করা দরকার। একটি সত্তা ক্ষেত্রের এপিআই চিট শীটে রেফারেন্সযুক্ত প্রশ্ন লিঙ্কগুলি যা সাধারণ ক্ষেত্রের ধরণ এবং তাদের বৈশিষ্ট্যগুলি তালিকাভুক্ত করে।


চিত্র ক্ষেত্রের জন্য {% নোড.ফিল্ড_আর্টিকেল_আইমেজ.টিজারেট_আইডি%}
যোগেশ কুশওয়াহা

13

বিষয়বস্তুর ভিতরে অ্যারে রেন্ডার গঠন সম্পর্কে আপনি নিশ্চিত হতে পারবেন না, সুতরাং এটি সর্বোত্তম পদ্ধতি নয় এটি সম্ভব।

এটি আরও ভাল সমাধান হতে পারে:

{% if content.field_example|render|striptags|trim %}
  <p>field is not empty</p>
{% endif %}

ক্ষেত্রটি রেন্ডারিংয়ের ফলে কোনও আউটপুট উত্পন্ন হয় কিনা এটি পরীক্ষা করে।

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


আমি বার্ডিরের উত্তরটিকে সঠিক বলে বিবেচনা করি কারণ এটি আরও নমনীয়।
sainf

@ 4 কে 4: |renderফিল্ড টেমপ্লেটগুলি থেকে র্যান্ডম হোয়াইটস্পেসের কারণে এটি যথেষ্ট নয়, এই লিঙ্কটি দেখুন:
ট্যুইগ

@ মোজতবা রহেহানি: ধন্যবাদ, দুর্দান্ত খুঁজে পেয়েছি। সেখানে এই লিঙ্কটি পাওয়া গেছে drupal.org/node/2783633#comment-11510195 । কোডে এটি যুক্ত হয়েছে।
4k4

4

টুইগ টেম্প্লেটিং ( ক্ষেত্র সংগ্রহ )
টেমপ্লেট : ক্ষেত্র-সংগ্রহ-আইটেম - ক্ষেত্রের পরিষেবাগুলি html.twig ক্ষেত্রটি খালি নয় কিনা তা পরীক্ষা করুন

" | ক্ষেত্র_মূল্য " ব্যবহার করে মান পেতে ফিল্ড টুইগ মান মডিউল ইনস্টল করুন , তারপরে " খালি নয় "

{% if content.field_work|field_value is not empty %}

       ...

{% endif %} 

1
{% if not (node.field_whatever.isEmpty == true) and content.field_whatever is defined %}
  <div class="whatever_markup">
    {{ content.field_whatever }}
  </div>
{% endif %}

এই সমাধানটি বেশ বুলেট-প্রুফ এবং এমনকি পুনঃব্যবস্থা এবং / অথবা ভাগ করা টেম্পলেটগুলিতেও কাজ করে (যেমন একটি ভাগ করে নেওয়া node--teaser.html.twigএকাধিক বান্ডিল)

  • এটি সমস্ত ক্ষেত্রের ধরণের জন্য কাজ করে
  • ক্ষেত্রটি বিদ্যমান কিনা তা এটি পরীক্ষা করে
  • ক্ষেত্রটি খালি নেই কিনা তা এটি পরীক্ষা করে
  • ক্ষেত্রটি প্রদর্শন মোডে লুকিয়ে নেই কিনা তা এটি পরীক্ষা করে

দ্বৈত নেতিবাচক not ...isEmpty == trueপ্রয়োজনীয়, অন্যথায় একটি অ-বিদ্যমান ক্ষেত্র চেক ব্যর্থ হবে। আমি আরও বিশ্বাস করি যে ক্ষেত্রটি রেন্ডারিংয়ের সাথে জড়িত যে কোনও চেকের চেয়ে আমার সমাধান ত্রুটিগুলির থেকে অনেক দ্রুত এবং স্থিতিশীল।

এটি কোনও সত্তা টেমপ্লেটের জন্য কাজ করা উচিত, উদাহরণস্বরূপ আপনি কেবল কোনও টেম্পলেট ফাইলের node.field_xxxসাথে প্রতিস্থাপন করতে পারেনparagraph.field_xxxparagraph.html.twig

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