2016-01-13 137 views
1

我有一个表格类型有没有办法强制在Symfony2中进行表单绑定?

class LoginFacebookType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('access_token', 'text', array("constraints" => array(
       new Assert\NotBlank(), 
       new Assert\Length(array("max" => 512))       
      ))) 
      ->add('save', 'submit'); 
    } 

    public function getName() 
    { 
     return 'facebook_login'; 
    } 
} 

然后,我使用的控制器上,因为:

$facebookLoginForm = $this->createForm(new LoginFacebookType()); 
$facebookLoginForm->handleRequest($request); 
if($facebookLoginForm->isValid()) 
{ 
    //do something 
} 
else 
{ 
    //Debug form errors 
    print_r($facebookLoginForm->getErrorsAsString()); die(); 
} 

我的问题是:如果我与单个PARAM的请求称为“facebook_login [的access_token] “我得到控制器上的所有错误,比如一个非常大的访问令牌,或者没有传递csrf_token(这没问题)。但是如果我没有任何参数发出请求,我会得到isValid = false,但是错误列表是空的。

我想要一个“access_token字段是必需的”和“无效的csrf_token”或类似的东西。

我该如何实现它?

回答

2

这是因为如果POST数据中没有“facebook_login”键,表单将不会被提交。您可以强制它提交替换$facebookLoginForm->handleRequest($request);与:

$facebookLoginForm->submit($request->request->get('facebook_login', [])); 
+0

谢谢,它的工作。你知道这个方法是否可以与包含'file'字段的表单一起使用吗? – Pipe

相关问题