2013-02-06 32 views
17

Đầu tiên, hãy để tôi bắt đầu với mã Tôi đang cố gắng sử dụng:Làm cách nào để tôi có thể ghi đè lên khối bố cục TWIG?

{% if modal == true %} 
    {% block header %}{% endblock %} 
    {% block footer %}{% endblock %} 
{% endif %} 

Những gì tôi đang cố gắng để thực hiện là để không hiển thị header và footer khối của tôi CHỈ nếu biến được gọi là phương thức là đúng. Tôi cũng có dưới đây câu lệnh if:

{% block content %} 
    {{ dump(modal) }} 
{% endblock %} 

gì xảy ra ở đây là ghi đè lên tôi cho đổ các khối header và footer luôn chạy bất kể nếu giá trị của phương thức là đúng hay không. Vì vậy, tôi chạy điều này với phương thức được chuyển thành false và kết quả là đầu trang và chân trang vẫn không hiển thị. Đầu ra của lệnh kết xuất chính xác cho thấy đúng hoặc sai, nhưng điều kiện luôn luôn dường như được đánh giá là đúng trong câu lệnh if.

Các khối có thể không được bao bọc trong câu lệnh có điều kiện hay tôi cần làm gì thêm để thực hiện công việc này?

Cảm ơn bạn đã trợ giúp bạn có thể cung cấp.

Trả lời

21

Blocks không quan tâm đến bất kỳ logic xung quanh nó, như đã nói ở the documentation:

Một khối cung cấp một cách để thay đổi như thế nào một phần nhất định của một mẫu được trả lại nhưng nó không can thiệp vào bất kỳ cách nào với logic xung quanh nó.

Bạn nên đặt logic đó bên trong khối, chứ không phải trên mặt ngoài, như bạn có thể thấy trong ví dụ cuối cùng trong bài viết đó.

+0

Cảm ơn. Tôi chỉ đang nói chuyện với một đồng nghiệp đã đề nghị cùng một điều. Anh ta nói để thử render block cha nếu modal không đúng. – slave2zeros

42

Xác định

{% block footer %}Some standard content{% endblock %} 

trong mẫu mẹ cành lá. Sau đó, trong mẫu mà bạn muốn để quyết định xem nội dung hiển thị của chân bạn có thể làm:

{% block footer %} 
    {% if not modal == true %} 
    {{ parent() }} 
    {% endif %} 
{% endblock %} 

Nếu phương thức là sự thật - chân sẽ trống, nếu không muốn nói - ở chân trang sẽ được in "Một số nội dung tiêu chuẩn"

+5

Trong khi câu trả lời được chấp nhận là chính xác, câu trả lời này có cách tiếp cận đó và cho thấy cách thực sự triển khai giải pháp đó. +1 cho {{parent()}} –

+0

Đây là câu trả lời hay nhất khi trả về giá trị mặc định – numediaweb

Các vấn đề liên quan