感谢你来到这里
我真的很激动
盼望,能有你的支持
捐赠可扫描二维码转账支付
支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
如果你在使用表单组件的验证约束,那么在翻译错误信息时会很容易:直接创建一个翻译源给 validators
这个 域 即可。
第一步,假设你已经创建了一个要用在程序某处的传统PHP对象如下:
1 2 3 4 5 6 7 | // src/AppBundle/Entity/Author.php
namespace AppBundle\Entity;
class Author
{
public $name;
} |
添加约束时可以使用任何一种受到支持的方法。然后设置翻译源的文本信息选项。例如,为了保证 $name 属性不为空,添加以下代码:
1 2 3 4 5 6 7 8 9 10 | // src/AppBundle/Entity/Author.php
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
/**
* @Assert\NotBlank(message = "author.name.not_blank")
*/
public $name;
} |
1 2 3 4 5 | # src/AppBundle/Resources/config/validation.yml
AppBundle\Entity\Author:
properties:
name:
- NotBlank: { message: 'author.name.not_blank' } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!-- src/AppBundle/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="AppBundle\Entity\Author">
<property name="name">
<constraint name="NotBlank">
<option name="message">author.name.not_blank</option>
</constraint>
</property>
</class>
</constraint-mapping> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // src/AppBundle/Entity/Author.php
// ...
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Constraints\NotBlank;
class Author
{
public $name;
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint('name', new NotBlank(array(
'message' => 'author.name.not_blank',
)));
}
} |
接下来,在 validators
目录下,为约束信息创建一个翻译源,此 xliff 文件一般置于bundle的 Resources/translations/
目录下。
1 2 3 4 5 6 7 8 9 10 11 12 | <!-- validators.en.xlf -->
<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" original="file.ext">
<body>
<trans-unit id="author.name.not_blank">
<source>author.name.not_blank</source>
<target>Please enter an author name.</target>
</trans-unit>
</body>
</file>
</xliff> |
1 2 | # validators.en.yml
author.name.not_blank: Please enter an author name. |
1 2 3 4 | // validators.en.php
return array(
'author.name.not_blank' => 'Please enter an author name.',
); |
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。