[英]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.