我正在尝试使用 Json-RPC 验证参数。通过 Symfony2 验证,我可以做到这一点:
$expense = new Expense;
$expense->setAmount(1);
$validator = $this->get('validator');
$errors = $validator->validate($expense);
但我不想用setFoo()
方法手动指定每个参数。无论如何绑定数据类似于 SymfonyForm
库的工作方式吗?
我正在尝试使用 Json-RPC 验证参数。通过 Symfony2 验证,我可以做到这一点:
$expense = new Expense;
$expense->setAmount(1);
$validator = $this->get('validator');
$errors = $validator->validate($expense);
但我不想用setFoo()
方法手动指定每个参数。无论如何绑定数据类似于 SymfonyForm
库的工作方式吗?
事实证明这对于 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 对象后,即可正常验证。
如果我理解你的问题,我$errors = $validator->validate($user)
会做这项工作。请参阅使用验证器服务文档。