Symfony 保留表单值教程展示了在表单提交失败后如何在表单提交后保持表单值。 在本教程中,我们进行传统的表单提交,我们不使用表单构建器。
Symfony
Symfony 是一组可重用的 PHP 组件和一个用于 Web 项目的 PHP 框架。 Symfony 于 2005 年发布为免费软件。Symfony 的原始作者是 Fabien Potencier。 Symfony 受到 Spring 框架的极大启发。
保留表单值
用户提交表单后,将由应用进行验证。 当验证失败时,应用将用户重定向回表单,显示验证错误。 最好将已输入的值保留在表格中。
Symfony 保留表单值示例
在示例中,我们有一个简单的表单,其中包含两个字段:名称和电子邮件。 提交表单后,我们检查 CSRF 保护并使用 Symfony 的Validator
验证输入值。 我们将输入的值存储到会话中,以在提交失败时取回它们。
建立应用
我们首先使用 composer 建立应用。
我们创建一个新的 Symfony 骨架项目,然后进入新创建的项目目录。
我们安装了三个基本的 Symfony 软件包:twig
,annot
和validator
。 程序包可能具有别名。 例如,symfony/validator
具有两个别名:validator
和validation
。
跨站点请求伪造需要security-csrf
软件包,而日志记录则需要monolog-bundle
软件包。
我们安装了PropertyAccess
组件,该组件用于方便读取和写入对象和数组的属性/键。
我们安装制造商组件和开发服务器。
我们创建一个HomeController
。 控制器将表单发送给客户端。
src/Controller/HomeController.php
这是一个简单的控制器,可将包含 Web 表单的视图发送给用户。
我们创建一个MessageController
来响应表单提交。
src/Controller/MessageController.php
在MessageController
中,我们检查 CSRF 令牌,验证表单输入值,并将响应发送回客户端。
验证委派给ValidationService
,后者被注入到方法中。
我们获得 CSRF 令牌并对其进行验证。 如果验证失败,我们将带有错误消息的响应发送回客户端。
我们检索表单输入值,并使用验证服务对其进行验证。 如果验证服务失败,它将返回错误消息。
如果有一些错误消息,我们将输入值添加到会话中,以便我们可以在重定向后检索它们。
我们将消息添加到 Flash 包中; 闪存袋用于存储临时消息,例如我们的验证消息。
我们使用redirectToRoute()
重定向回表单。
src/Service/ValidationService.php
ValidationService
检查 CSRF 令牌并验证输入。
我们在构造函数中注入了四个对象:令牌管理器,验证器,属性访问器和记录器。
此代码使用令牌管理器验证 CSRF 令牌。
这些是验证表单输入的约束。
使用验证器,我们可以验证表单输入值。
如果存在一些违规行为,我们将记录故障并生成验证错误消息。 为了构建消息,我们利用 Symfony 属性访问器。 如果没有违规,我们将返回一个空数组。
templates/home/index.html.twig
主页上有一个表格。 该表格包含两个字段:姓名和电子邮件。
它还包含一个隐藏字段,以防止跨站点请求伪造。
如果闪存包中有一些错误消息,我们将显示它们。
输入标签从会话中检索其值(如果有)。 重定向到表单后,这很有用。
templates/base.html.twig
这是基本的 Twig 模板。 它包含语义 UI CSS 框架。
您可能也对以下相关教程感兴趣: Symfony 简介, Symfony 服务教程, Symfony Flash 消息, Symfony 表单教程 , PHP 教程。