我有一条创建用户的路线,我需要一些参数才能得到这个。
例如我的控制器是这样的:
$dataJson = json_decode($request->getContent(),true);
$data = new \stdClass();
$data->email = $dataJson['email'];
$data->pwd = $dataJson['pwd'];
$data->role = $dataJson['role'];
我需要所有(电子邮件,密码,角色)来创建我的用户。 我是否必须检查每个参数以使我的请求无效?
e.g。
$dataJson['email'] == null ? 'error' : $dataJson['email']
$dataJson['pwd'] == null ? 'error' : $dataJson['pwd']
$dataJson['role'] == null ? 'error' : $dataJson['role']
当然这不是正确的方法,但我如何确定我的请求有效?
答案 0 :(得分:0)
我将采用的方法是拥有一个值对象并为其定义验证规则。
您可以手动加载对象,例如:
$data = new VO\UserChangeRequest($dataJson['email'], $dataJson['pwd'], $dataJson['role']);
然后我会检查对象是否有效:
$violations = $this->get('validator')->validate($data);
$isValid = 0 === count($violations);
验证规则将由捆绑配置中的验证程序组件获取。
这是一篇解释Symfony2验证的文章:
P.S对于您的具体情况,我宁愿使用JMSSerializerBundle。它很好地集成并且在使用param转换器时,您将最终自动实例化并为您提供水合物。首先设置可能有点挑战。