[英]Symfony2 - using form validation in REST API project
在一个Symfony REST API项目中,我们正在对传递到端点的参数进行验证。 我正在尝试为此目的使用表单,但是它们似乎无法按预期工作。
以这个端点为例:
GET /users/
接受companyId作为参数
我们希望此参数是必需的并且是整数。
控制器
public function getUsersAction(Request $request)
{
$user = new User();
$form = $this->createForm(new UserType(), $user, array(
'method' => 'GET'
));
$form->handleRequest();
if ( ! $form->isValid()) {
// Send a 400
die('form is not valid');
} else {
die('form is valid');
}
}
表格类型
class UserType extends FormType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder->add('companyId', 'integer');
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
parent::configureOptions($resolver);
$resolver->setDefaults(array(
'data_class' => 'ApiBundle\Entity\User',
'csrf_protection' => false
));
}
/**
* @return string
*/
public function getName()
{
return ''; // if this is not empty, the form is not submitted at all
}
}
validation.yml
ApiBundle\Entity\User:
properties:
companyId:
- Type:
type: integer
- NotBlank: ~
- NotNull: ~
config.yml
framework:
validation: { enabled: true, enable_annotations: false }
问题
控制器中的$ form-> isValid()始终为true
请替换为
$form->handleRequest();
至
$form->handleRequest($request);
我希望它能起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.