相关疑难解决方法(0)

结合约束和数据转换器

我想做一些看起来像在如何使用数据变换器教程中所做的事情.但我想添加一个过程,我找不到任何例子.

在symfony教程中,数据转换是关于将问题编号更改为Issue对象.这是在reverseTransform()功能中完成的IssueToNumberTransformer

public function reverseTransform($number)
{
    if (!$number) {
        return null;
    }

    $issue = $this->om
        ->getRepository('AcmeTaskBundle:Issue')
        ->findOneBy(array('number' => $number))
    ;

    if (null === $issue) {
        throw new TransformationFailedException(sprintf(
            'An issue with number "%s" does not exist!',
            $number
        ));
    }

    return $issue;
}
Run Code Online (Sandbox Code Playgroud)

我们可以看到,如果提供了无效的问题编号,转换将失败并且函数抛出一个TransformationFailedException.因此,表单作为错误消息"此值无效".个性化这个消息会很棒.

数据转换过程在任何验证之前执行(使用约束应用于字段),因此在尝试转换之前,我找不到验证问题编号的方法.

作为我必须在转换之前验证的另一个例子,我使用MongoDB文档管理器将"问题mongo id"转换为问题(表单由REST API服务器使用,这就是我收到id的原因).所以:

public function reverseTransform($id)
{
    if (!$number) {
        return null;
    }

    $issue = $this->dm
        ->getRepository('AcmeTaskBundle:Issue')
        ->find(new \MongoId($id))
    ;

    if (null === $issue) {
        throw new …
Run Code Online (Sandbox Code Playgroud)

forms validation transformation symfony

12
推荐指数
1
解决办法
2563
查看次数

在数据转换之前应用验证

我想将我从提交的用户数据获得的文本字段转换为Symfony2中的Object.我使用DataTransformer来做到这一点.当我使用内置的验证像一个"NotEmpty"或"NOTNULL"或内置的Symfony2通过我的特定对象,以他们的标准方式的任何自定义的验证,但我想将其转换为对象之前验证这一文本字段.我该怎么办?(如果我的英语不是那么好的话)

php forms symfony

6
推荐指数
1
解决办法
1434
查看次数

标签 统计

forms ×2

symfony ×2

php ×1

transformation ×1

validation ×1