symfony框架Twig模板语言的使用

简介: symfony框架Twig模板语言的使用

模板继承

模板路径:app/Resources/views/


母版:base.html.twig


<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>{% block title %}自定义标题{% endblock title %}</title>
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">
<!-- 可选的Bootstrap主题文件(一般不用引入) -->
<link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</head>
<body>
<div class="row bg-primary">
    <div class="col-sm-1 col-xs-1"></div>
    <div class="col-sm-11 col-xs-11"><h1><a href="" style="text-decoration: none;color: white;">MyWebSite</a></h1></div>
</div>
{% block body %}
{% endblock body %}
</body>
</html>

list.html.twig

{% extends "base.html.twig" %}
{% block title %}MyWebSite{% endblock title %}
{% block body %}
<div class="row jumbotron">
    <div class="col-md-1 col-xs-1"></div>
    <div class="col-md-10 col-xs-10"><h1>Welcome to MyWebSite!</h1></div>
    <div class="col-md-1 col-xs-1"></div>
</div>
{% endblock body %}

show.html.twig


{% extends "base.html.twig" %}
{% block title %}博客内容{% endblock title %}
{% block body %}
<div class="row jumbotron">
    <div class="col-md-1 col-xs-1"></div>
    <div class="col-md-10 col-xs-10"><h1>我的第一篇博客</h1></div>
    <div class="col-md-1 col-xs-1"></div>
</div>
{% endblock body %}

list.html.twig 和 show.html.twig 都继承了 base.html.twig,拥有了相同的页面布局


变量传递

文件路径:src/AppBundle/Controller/BlogController.php


return $this->render('blog/show.html.twig', 
  array('title' => '博客标题', 'content' => '博客内容')
);

修改show.html.twig中block body


<div class="row jumbotron">
    <div class="col-md-1 col-xs-1"></div>
    <div class="col-md-10 col-xs-10"><h1>{{ title }}</h1></div>
    <div class="col-md-1 col-xs-1"></div>
</div>
<div class="row">
    <div class="col-md-1 col-xs-1"></div>
    <div class="col-md-10 col-xs-10"><h4>{{ content }}</h4></div>
    <div class="col-md-1 col-xs-1"></div>
</div>

变量传递通过 {{ }} 这样的符号来传递

image.png

流程控制

src/AppBundle/Controller/BlogController.php

$content = array();
        $content[] = array('category' => '类别1', 'text' => '内容1');
        $content[] = array('category' => '类别2', 'text' => '内容2');
        $content[] = array('category' => '类别1', 'text' => '内容3');
        $content[] = array('category' => '类别2', 'text' => '内容4');
        return $this->render('blog/show.html.twig', array('title' => '博客标题', 'content' => $content));

修改app/Resources/views/blog/show.html.twig,改成:


{% for cont in content %}
{% if cont['category'] == '类别2' %}
<div class="row">
    <div class="col-md-1 col-xs-1"></div>
    <div class="col-md-10 col-xs-10"><h4>{{ cont['text'] }}</h4></div>
    <div class="col-md-1 col-xs-1"></div>
</div>
{% endif %}
{% endfor %}

循环遍历 : {% for cont in content %}

逻辑判断: {% if cont['category'] == '类别2' %}


链接生成

<a href='{{ path('blog_list') }}'>{{ cont['text'] }}</a>

blog_list为router.yml里边配置的路由名称


常用模板语法


// 默认值
{{ var|default('var is not defined') }}

关于Twig的详细使用可参考

相关文章
|
安全 PHP Python
symfony框架Twig模板语言的使用
symfony框架Twig模板语言的使用
194 0
|
SQL .NET
JScript 快速开发框架 Edk:模板
网页模板是把动态的数据和静态的表现组装到一起的工具,使得内容与表现方式可以分离,是 Web 开发中的重要技术手段。早期的 Web 开发很简单,还没“模板 ”的概念。只需把数据提取出来,放在 HTML 里面显示就达到程序的目的。
672 0
|
Web App开发 JavaScript 前端开发
JavaScript模板引擎简介
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。
749 0
|
8月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的编程语言在线学习平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的编程语言在线学习平台附带文章和源代码部署视频讲解等
50 4
|
Web App开发 前端开发 PHP
symfony学习笔记2—纯的PHP代码和symfony的区别
Symfony vs 纯PHP为啥symfony比普通的php文件访问要好?这一章我们写一个简单的php文件项目,然后组织它,你会发现为什么web应用会发展到现在这个样子。最后我们将学习symfony如何重用代码。
940 0
|
PHP 开发工具 git
Yii2语言国际化配置Twig翻译解决方案
转载 Yii2语言国际化配置Twig翻译解决方案 我自己在写项目的时候,不喜欢使用php自身的模板,主要是各种PHP标签让我烦,而且对Html的标签兼容也不够友好,所以我后面采用了twig模板,配置之类的也是很方便,写...
1313 0
|
7月前
|
开发框架 前端开发 JavaScript
使用代码生成工具快速生成基于ABP框架的Vue+Element的前端界面
使用代码生成工具快速生成基于ABP框架的Vue+Element的前端界面
|
JavaScript 前端开发 API
TypeScript 创建单页天气查询应用程序
关于 TypeScript 是什么,可以在掘金找到很多文章,如想学习一下TypeScript,GitHub是个不错的平台,在文章《收藏GitHub上的7个热门TypeScript项目》介绍几个不错的开源项目。本文将使用TypeScript创建单页应用程序(SPA)示例,天气查询。
210 0
TypeScript 创建单页天气查询应用程序
|
1月前
|
PHP 开发者
深入探索Laravel框架中的Blade模板引擎
Blade模板引擎通过提供简洁的语法、强大的模板继承和灵活的组件系统,大大提升了Laravel开发的效率和代码的可维护性。掌握Blade的各种特性和最佳实践,可以帮助开发者构建高效、可维护和美观的Web应用视图层。通过不断练习和实践,进一步深化对Blade模板引擎的理解和应用,可以大大提升Laravel开发项目的质量和效率。
54 26

热门文章

最新文章