থাইমালিফ: কীভাবে একটি সিএসএস বর্গ যুক্ত করতে / মুছে ফেলার জন্য কন্ডিশনাল ব্যবহার করবেন


99

থাইমালিফকে টেমপ্লেট ইঞ্জিন হিসাবে ব্যবহার করে , ধারাটি divসহ কোনও সরল থেকে গতিশীলভাবে কোনও সিএসএস শ্রেণি যুক্ত / সরানো সম্ভব th:if?

সাধারণত, আমি শর্তাধীন ধারাটি নিম্নলিখিত হিসাবে ব্যবহার করতে পারি:

<a href="lorem-ipsum.html" th:if="${condition}">Lorem Ipsum</a> 

আমরা লরেম ইপসাম পৃষ্ঠায় একটি লিঙ্ক তৈরি করব , তবে কেবল শর্তের ধারাটি যদি সত্য হয়।

আমি অন্যরকম কিছু সন্ধান করছি: আমি চাই ব্লকটি সর্বদা দৃশ্যমান হোক তবে পরিস্থিতি অনুসারে পরিবর্তনশীল ক্লাস সহ।


উত্তর:


249

এছাড়াও আছে th:classappend

<a href="" class="baseclass" th:classappend="${isAdmin} ? adminclass : userclass"></a>

যদি isAdminতা হয় trueতবে এর ফলস্বরূপ:

<a href="" class="baseclass adminclass"></a>

4
আমি মনে করি এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। th:classআপনার শ্রেণীর বৈশিষ্ট্যটি প্রতিস্থাপন / পুনর্লিখন করে। th:classappendআপনি কি চান
আবুডজ

বিকল্পভাবে আপনি কেবল কন্ট্রোলার থেকে পছন্দসই ক্লাসটি মডেলটিতে ইনজেকশন করতে পারেন, এবং তারপরেth:classappend="${theRightClass}"
ডেমানিয়াক

4
আরও একটি বিষয় মনে রাখবেন যে দুর্ভাগ্যক্রমে আপনার একাধিক th:classappendবৈশিষ্ট্য থাকতে পারে না । সর্বাধিক এক অনুমোদিত Fatal error during parsing org.xml.sax.SAXParseException: Attribute "th:classappend" was already specified for element "img".
ব্যবহারকারী 1053510

th:classremoveঅন্যদের প্রভাবিত করে বা আপনার বাইন্ডিং এক্সএমএলে একটি সম্পূর্ণ শ্রেণি তালিকাটিকে হার্ড কোডিং ব্যতীত কোনও একক শ্রেণীর অপসারণ করার কি নেই ? বা কোনও গতিশীল ক্লাস ছাড়ছে এবং শর্তাধীনভাবে যাওয়ার একমাত্র উপায় সংযোজন করছে?
ড্রাজেন বিজোলোভুক

কীভাবে করবেন, যদি 2 টিরও বেশি শ্রেণি পরিবর্তনের প্রয়োজন হয়
সিনথ লক্ষীথা

34

হ্যাঁ, পরিস্থিতি অনুযায়ী গতিময়ভাবে একটি সিএসএস শ্রেণি পরিবর্তন করা সম্ভব, তবে তা নয় th:if। এটি এলভিস অপারেটর দিয়ে করা হয়

<a href="lorem-ipsum.html" th:class="${isAdmin}? adminclass : userclass">Lorem Ipsum</a> 

@atilkan: আপনি কেবল এলভিস অপারেটর গুগল করতে পারেন এবং এটি টার্নারি অপারেটরের একটি বৈকল্পিক দেখতে পারেন। এমনকি উইকিপিডিয়া প্রথম কয়েকটি লাইনে এটি ব্যাখ্যা করে: en.wikedia.org/wiki/Elvis_operator
কেনি

7

এই উদ্দেশ্যে এবং যদি আমার বুলিয়ান ভেরিয়েবল না থাকে তবে আমি নিম্নলিখিতটি ব্যবহার করি:

<li th:class="${#strings.contains(content.language,'CZ')} ? active : ''">

5

আর একটি খুব অনুরূপ উত্তর হ'ল "সমন্বিত" এর পরিবর্তে "সমান" ব্যবহার করা।

<li th:class="${#strings.equals(pageTitle,'How It Works')} ? active : ''">

4

আপনি যদি কেবল কোনও ত্রুটির ক্ষেত্রে কোনও শ্রেণি সংযোজন করতে চান তবে আপনি ডকটিতেth:errorclass="my-error-class" উল্লিখিত ব্যবহার করতে পারেন ।

<input type="text" th:field="*{datePlanted}" class="small" th:errorclass="fieldError" />

ফর্ম ফিল্ড ট্যাগে প্রয়োগ করা হয়েছে (ইনপুট, নির্বাচন করুন, টেক্সারিয়া…), এটি কোনও বিদ্যমান নাম বা তম থেকে একই পরীক্ষায় ক্ষেত্রের নামটি পড়তে হবে: একই ট্যাগে ক্ষেত্রের বৈশিষ্ট্যগুলি, এবং তারপরে নির্দিষ্ট সিএসএস শ্রেণিকে ট্যাগটিতে যুক্ত করবে যদি এই জাতীয় ক্ষেত্রে কোনও যুক্ত ত্রুটি থাকে


2

কেবল আমার নিজের মতামত যুক্ত করার জন্য, এটি কারওর পক্ষে কার্যকর হতে পারে। এটিই আমি ব্যবহার করেছি।

<div th:class="${request.read ? 'mdl-color-text--grey-800 w500' : ''}"> </div>

2

তৃতীয় আরেকটি ব্যবহার: ক্লাস, @ নিউব্লাইচ এবং @ চার্লসের মতোই পোস্ট করেছে, তবে "অন্য" কেস না থাকলে সর্বোচ্চে সরলীকৃত করা হয়েছে:

<input th:class="${#fields.hasErrors('password')} ? formFieldHasError" />

# ক্ষেত্র.হাসআররিজ ('পাসওয়ার্ড') মিথ্যা হলে শ্রেণি বৈশিষ্ট্য অন্তর্ভুক্ত করবেন না।


1

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

এটা করা উচিত: -

 <a href="" class="baseclass" th:classappend="${isAdmin} ? 'adminclass' : 
 'userclass'"> 
 </a>

অথবা শুধুই:

<a href="" th:class="${isAdmin} ? 'newclass' : 
  'baseclass'"> 
 </a>

0

আপনি যদি সেই অনুযায়ী ক্লাস যুক্ত করতে বা সরিয়ে দিতে চাইছেন তবে ইউআরএলটিতে কিছু নির্দিষ্ট প্যারাম রয়েছে বা না থাকলে। আপনি যা করতে পারেন এটি এটিই

<a th:href="@{/admin/home}"  th:class="${#httpServletRequest.requestURI.contains('home')} ? 'nav-link active' : 'nav-link'"  >

যদি ইউআরএলটিতে 'হোম' থাকে তবে সক্রিয় শ্রেণি যুক্ত করা হবে এবং বিপরীতে।


0

কেউ যদি বুটস্ট্র্যাপ ব্যবহার করে তবে আমি একাধিক শ্রেণি যুক্ত করতে সক্ষম হয়েছি:

<a href="" class="baseclass" th:classappend="${isAdmin} ?: 'text-danger font-italic' "></a>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.