本文实例讲述了Symfony数据校验方法。分享给大家供大家参考。具体分析如下:
校验在web应用程序中是一个常见的任务。数据输入到表单需要被校验。数据在被写入数据库之前或者传入一个webservice时也需要被校验。
Symfony2 配备了一个Validator 组件,它让校验工作变得简单易懂。该组件是基于JSR303 Bean校验规范。一个Java规范用在PHP中。
基本验证
理解校验的最好方法是看它的表现。首先,假设你已经创建了一个用于你应用程序某个地方的PHP对象。
代码如下://src/Acme/BlogBundle/Entity/Author.php
namespace Acme/BlogBundle/Entity;
class Author
{
public $name;
}
到现在为止,它只是个服务于你应用程序的某些目的的普通的类。而校验的目的就是要告诉你对象的数据是否合法。为了这个目的,你需要配置一个对象必须遵守规则或者约束列表来让自己的数据合法。这些规则可以被描述成多种不同的格式的(比如,YAML,XML,类声明或者PHP)。比如,我们保证属性$name不能为空,来添加下面的规则:
YAML格式:
代码如下:# src/Acme/BlogBundle/Resources/config/validation.yml
Acme/BlogBundle/Entity/Author:
properties:
name:
- NotBlank: ~
类声明格式:
代码如下:// src/Acme/BlogBundle/Entity/Author.php
use Symfony/Component/Validator/Constraints as Assert;
class Author
{
/**
* @Assert/NotBlank()
*/
public $name;
}
XML格式:
代码如下:<!-- src/Acme/BlogBundle/Resources/config/validation.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd">
<class name="Acme/BlogBundle/Entity/Author">
<property name="name">
<constraint name="NotBlank" />
</property>
</class>
</constraint-mapping>
PHP代码格式:
代码如下:// src/Acme/BlogBundle/Entity/Author.php
use Symfony/Component/Validator/Mapping/ClassMetadata;
use Symfony/Component/Validator/Constraints/NotBlank;
class Author
{
public $name;
新闻热点
疑难解答