Nette是PHP领域一款设计简洁、性能优异的框架,它内置的Latte模板引擎语法直观、扩展性强,非常适合快速开发Web项目。接下来将详细介绍Nette框架的基础使用方式,以及如何结合Latte模板引擎提升开发效率。

一、Nette框架安装与环境准备
首先确保本地环境已安装PHP 8.0及以上版本,然后通过Composer安装Nette框架的基础包。执行以下命令创建新的Nette项目:
composer create-project nette/web-project my-nette-app cd my-nette-app php -S localhost:8000 -t www
安装完成后,项目的核心目录结构如下:
- app目录:存放应用逻辑、模板、配置文件
- www目录:网站根目录,入口文件index.php位于此处
- vendor目录:Composer依赖存放目录
二、Latte模板引擎基础语法
Latte是Nette原生的模板引擎,语法接近PHP但更简洁,默认情况下模板文件存放在app/UI/目录下,后缀为.latte。
1. 变量输出
使用大括号包裹变量名即可输出内容,默认会自动转义避免XSS攻击:
<!-- 输出普通变量 -->
<p>用户名:{$username}</p>
<!-- 输出数组元素 -->
<p>用户年龄:{$user['age']}</p>
<!-- 不转义输出(仅信任的内容使用) -->
{!$raw_content}
2. 条件判断与循环
Latte支持类似PHP的条件和循环语法,不需要写额外的PHP标签:
<!-- 条件判断 -->
{if $score >= 60}
<p>成绩合格</p>
{else}
<p>成绩不合格</p>
{/if}
<!-- 循环遍历数组 -->
<ul>
{foreach $user_list as $user}
<li>{$user['name']} - {$user['email']}</li>
{/foreach}
</ul>
3. 模板继承与区块定义
可以通过模板继承减少重复代码,先定义基础模板app/UI/@layout.latte:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>{block title}默认标题{/block}</title>
</head>
<body>
<header>公共头部内容</header>
{block content}{/block}
<footer>公共底部内容</footer>
</body>
</html>
子模板继承基础模板并填充区块内容:
{extends '@layout.latte'}
{block title}用户列表页{/block}
{block content}
<h2>用户列表</h2>
<ul>
{foreach $users as $user}
<li>{$user['name']}</li>
{/foreach}
</ul>
{/block}
三、完整开发示例:用户信息展示
接下来通过一个完整的示例演示从路由配置到模板渲染的全流程。
1. 配置路由
打开app/router/RouterFactory.php,添加用户页面的路由规则:
<?php
declare(strict_types=1);
namespace AppRouter;
use NetteApplicationRoutersRoute;
use NetteApplicationRoutersRouteList;
class RouterFactory
{
public static function createRouter(): RouteList
{
$router = new RouteList();
// 首页路由
$router->addRoute('', 'Home:default');
// 用户列表路由
$router->addRoute('user/list', 'User:list');
return $router;
}
}
2. 编写控制器逻辑
创建用户控制器app/UI/UserPresenter.php,处理数据逻辑并传递给模板:
<?php
declare(strict_types=1);
namespace AppUIUser;
use NetteApplicationUIPresenter;
class UserPresenter extends Presenter
{
public function renderList(): void
{
// 模拟用户数据
$users = [
['name' => '张三', 'email' => 'zhangsan@ipipp.com', 'age' => 25],
['name' => '李四', 'email' => 'lisi@ipipp.com', 'age' => 28],
['name' => '王五', 'email' => 'wangwu@ipipp.com', 'age' => 22],
];
// 将变量传递给Latte模板
$this->template->users = $users;
$this->template->page_title = '用户列表';
}
}
3. 编写Latte模板
创建对应的模板文件app/UI/User/list.latte,使用Latte语法渲染数据:
{extends '@layout.latte'}
{block title}{$page_title}{/block}
{block content}
<h1>{$page_title}</h1>
<table border="1" cellpadding="8" cellspacing="0">
<thead>
<tr>
<th>姓名</th>
<th>邮箱</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
{foreach $users as $user}
<tr>
<td>{$user['name']}</td>
<td>{$user['email']}</td>
<td>{$user['age']}</td>
</tr>
{/foreach}
</tbody>
</table>
{/block}
此时访问http://localhost:8000/user/list即可看到渲染后的用户列表页面,整个过程不需要手动拼接HTML字符串,Latte会自动处理变量转义和模板渲染,大幅减少了重复代码。
四、Latte常用扩展技巧
除了基础语法,Latte还支持很多实用功能提升开发效率:
- 内置过滤器:可以通过
|date、|truncate等过滤器处理变量,例如{$create_time|date:'Y-m-d H:i'}格式化时间 - 宏标签扩展:可以自定义宏标签简化重复逻辑,比如封装通用的分页组件
- 模板缓存:Latte默认会缓存编译后的模板,生产环境不需要额外配置即可获得较好的性能
通过以上步骤,就可以快速上手Nette框架和Latte模板引擎,满足大部分PHP Web项目的快速开发需求。