使用Symfony2验证POPO

时间:2012-12-03 10:02:41

标签: validation symfony

我正在尝试使用Json-RPC验证参数。使用Symfony2验证,我可以这样做:

$expense = new Expense;
$expense->setAmount(1);
$validator = $this->get('validator');
$errors = $validator->validate($expense);

但我不想用setFoo()方法手动指定每个参数。无论如何,绑定数据类似于Symfony Form库的工作方式吗?

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,$errors = $validator->validate($user)将完成这项工作。请参阅using the validator service文档。

答案 1 :(得分:0)

事实证明,Symfony2无法做到这一点。您必须自己绑定数据。我创建了一个类似于此的绑定方法:

$params = array('amount' => 1);

foreach($params as $key => $value) {
    try {
        $path = new PropertyPath($key);
        $path->setValue($obj, $value);
    } catch (\Exception $e) {
        // parameter does not exist in POPO
    }
}

将参数绑定到POPO对象后,可以正常验证它。