Làm cách nào để thêm biến toàn cục trong Twig?

Đôi khi chúng ta có thể cần đưa cùng một biến vào tất cả các mẫu Twig. Nó có thể được thực hiện trên mỗi bộ điều khiển bằng cách chuyển biến sang mẫu. Tuy nhiên, nó không phải là giải pháp tốt. Hướng dẫn này chỉ ra cách xác định các biến toàn cục cho các mẫu Twig trong ứng dụng Symfony 6

Các biến toàn cầu cho các mẫu Twig có thể được xác định bằng tùy chọn

namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
3 bên dưới khóa
namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
4

cấu hình/gói/cành cây. khoai mỡ

twig:
    globals:
        tracking_id: 'XXXXX-YYYYY-ZZZZZ'

Trong trường hợp của chúng tôi, biến

namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
5 sẽ được tự động đưa vào tất cả các mẫu Twig

mẫu/thử nghiệm/chỉ mục. html. cành cây

{{ tracking_id }}

Trong video này, chúng ta sẽ tìm hiểu cách tạo Biến toàn cầu Twig trong Craft CMS. Mục tiêu là cung cấp dữ liệu tham chiếu biến mà chúng tôi có thể sử dụng trong bất kỳ mẫu Twig nào trong dự án của chúng tôi.  

Đối với dự án này, tôi muốn tạo một biến số luôn cho tôi biết ai đó có phải là thành viên cao cấp của CraftQuest hay không. Vì tôi thực hiện nhiều việc cấp quyền trong các mẫu lặp đi lặp lại, nên tôi muốn tập trung quyền đó dưới dạng Biến toàn cầu Twig

Biến toàn cục Twig giống như bất kỳ biến nào khác trong Twig ngoại trừ việc nó có sẵn trong tất cả các mẫu trong dự án của bạn. Các biến toàn cầu phổ biến mà bạn có thể đã sử dụng là

namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
6,
namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
7 hoặc
namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
8

Chúng tôi sẽ tạo một biến toàn cục Twig đơn giản với dữ liệu tĩnh cho video này, sau đó tạo một biến cho dự án CraftQuest lấy dữ liệu từ một dịch vụ trong một mô-đun

Tạo Biến toàn cầu Twig đơn giản

  1. Tạo thư mục mới có tên là
    namespace craftquest\twigextensions;
    
    use Twig\Extension\AbstractExtension;  
    use Twig\Extension\GlobalsInterface;
    
    class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
    {
    
    }
    
    0
  2. Tạo tệp lớp cho tiện ích Twig. Bạn có thể chỉ sử dụng một tệp cho tất cả tiện ích mở rộng Twig của mình hoặc sử dụng tệp lớp chuyên dụng chỉ cho toàn cầu của bạn. Chúng tôi sẽ bắt đầu với một tệp chuyên dụng và sau đó trình bày cách thích ứng với việc sử dụng tệp lớp tiện ích mở rộng Twig hiện có

Lớp mở rộng

namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
1, mà chúng tôi sẽ mở rộng trong định nghĩa lớp của chúng tôi. Chúng tôi cũng muốn nhập
namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
2 từ Twig. Điều này sẽ xác định [[Giao diện PHP]] chúng ta sẽ triển khai trong lớp. Giao diện này chỉ định cách chúng ta phải triển khai lớp của mình cho toàn cầu.  

namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
3

namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}

namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
4

namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
5

{{ tracking_id }}
0

namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
6

namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
7

namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
8

Phương thức

namespace craftquest\twigextensions;

use Twig\Extension\AbstractExtension;  
use Twig\Extension\GlobalsInterface;

class CraftQuestTwigGlobals extends AbstractExtension implements GlobalsInterface
{

}
9 trả về một mảng nên chúng ta cần cấu trúc dữ liệu toàn cầu của mình như vậy. Mỗi biến toàn cục sẽ là mục riêng của nó trong mảng. Ý chí chính của mục mảng sẽ là tên biến khi được tham chiếu trong mẫu Cành cây và giá trị là giá trị

{{ tracking_id }}
00

{{ tracking_id }}
6

{{ tracking_id }}
01

{{ tracking_id }}
02

{{ tracking_id }}
9

Tệp lớp học

{{ tracking_id }}
03 – chúng tôi đã có sẵn những điều cơ bản từ công việc trước đó của chúng tôi trong khóa học. Những gì chúng ta cần làm bây giờ là thêm tệp lớp tiện ích mở rộng Twig mới của chúng tôi vào mảng bên trong phương thức riêng tư
{{ tracking_id }}
04 và sau đó nó sẽ được tải qua
{{ tracking_id }}
05 khi nó lặp qua mảng các tiện ích mở rộng để đăng ký.  

Biến toàn cục có thể là một chuỗi không?

Biến toàn cục có thể chứa giá trị số, chuỗi hoặc mảng chuỗi được lập chỉ mục .

Bạn có thể chỉnh sửa các biến toàn cục không?

Bạn có thể thay đổi các tính năng của một biến toàn cục hiện có bằng khung Chỉnh sửa định nghĩa biến toàn cầu .

Chủ Đề