উত্তর:
{% if var == constant('Namespace\\Entity::TYPE_PERSON') %}
{# or #}
{% if var is constant('Namespace\\Entity::TYPE_PERSON') %}
constant
ফাংশন এবং constant
পরীক্ষার জন্য ডকুমেন্টেশন দেখুন ।
শুধু আপনার সময় বাঁচাতে। আপনার যদি নেমস্পেসের অধীনে শ্রেণিবদ্ধ অ্যাক্সেসের প্রয়োজন হয় তবে ব্যবহার করুন
{{ constant('Acme\\DemoBundle\\Entity\\Demo::MY_CONSTANT') }}
{% if var == object.MY_CONSTANT %}
1.12.1 হিসাবে আপনি অবজেক্টের উদাহরণগুলি থেকে ধ্রুবকগুলিও পড়তে পারেন:
{% if var == constant('TYPE_PERSON', entity)
{{ constant('TYPE_PERSON', entity) }}
তবে নিম্নলিখিতগুলি করা সম্ভব ( $this->render('index.html.twig', ['entity' => new Entity()]);
সম্পাদনা: আমি আরও ভাল সমাধান পেয়েছি, এটি সম্পর্কে এখানে পড়ুন।
এর ক্লাস আছে বলে দিন:
namespace MyNamespace;
class MyClass
{
const MY_CONSTANT = 'my_constant';
const MY_CONSTANT2 = 'const2';
}
টুইগ এক্সটেনশান তৈরি এবং নিবন্ধন করুন:
class MyClassExtension extends \Twig_Extension
{
public function getName()
{
return 'my_class_extension';
}
public function getGlobals()
{
$class = new \ReflectionClass('MyNamespace\MyClass');
$constants = $class->getConstants();
return array(
'MyClass' => $constants
);
}
}
আপনি এখন টুইগে ধ্রুবকগুলি ব্যবহার করতে পারেন:
{{ MyClass.MY_CONSTANT }}
constant()
FQN এর সাথে ব্যবহার করা বিরক্তিকর হবে।
আপনি যদি নেমস্পেস ব্যবহার করছেন
{{ constant('Namespace\\Entity::TYPE_COMPANY') }}
গুরুত্বপূর্ণ! একক পরিবর্তে ডাবল স্ল্যাশ ব্যবহার করুন
সিমফোনির বইয়ের সেরা অনুশীলনে এই ইস্যুটির একটি বিভাগ রয়েছে:
ধ্রুবক () ফাংশনটির জন্য ধন্যবাদ আপনার টুইগ টেম্পলেটগুলিতে উদাহরণস্বরূপ ব্যবহার করা যেতে পারে:
// src/AppBundle/Entity/Post.php
namespace AppBundle\Entity;
class Post
{
const NUM_ITEMS = 10;
// ...
}
এবং এই ধ্রুবকটি টেমপ্লেট টোথায় ব্যবহার করুন:
<p>
Displaying the {{ constant('NUM_ITEMS', post) }} most recent results.
</p>
এখানে লিঙ্কটি: http://symfony.com/doc/current/best_practices/configration.html#constants-vs-configration-options
কয়েক বছর পরে আমি বুঝতে পারি যে আমার আগের উত্তরটি এতটা ভাল নয়। আমি এক্সটেনশন তৈরি করেছি যা সমস্যার আরও ভাল সমাধান করে। এটি ওপেন সোর্স হিসাবে প্রকাশিত।
https://github.com/dpolac/twig-const
এটি নতুন টুইগ অপারেটরটিকে সংজ্ঞায়িত করে #
যা আপনাকে ক্লাসের যে কোনও অবজেক্টের মাধ্যমে ধ্রুবক অ্যাক্সেস করতে দেয়।
এটি এর মতো ব্যবহার করুন:
{% if entity.type == entity#TYPE_PERSON %}
User#TYPE_PERSON
, NodeExpression
বর্গ ভালো কিছু, যা আমার জন্য কাজ পরিবর্তিত করা যেতে পারে: ->raw('(constant(\'App\\Entity\\' . $this->getNode('left')->getAttribute('name') . '::' . $this->getNode('right')->getAttribute('name') . '\'))')
। অবশ্যই, এটি আপনার ক্লাসগুলি App\Entity
নামের জায়গার মধ্যে সীমাবদ্ধ করে , তবে আমি মনে করি এটি সর্বাধিক প্রচলিত ব্যবহারের ক্ষেত্রে কভার করে।
{% if var is constant('TYPE_PERSON', object) %}