2016-01-13 4 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(); 
} 

Мои вопросы: Если я сделал запрос с одним парам под названием «facebook_login [access_token] «Я получаю все ошибки на контроллере, как очень большой токен доступа, или не передаю csrf_token (это нормально). Но если я сделал запрос без каких-либо параметров, я получу isValid = false, но список ошибок пуст.

Я хочу, чтобы поле «access_token» было обязательным »и« invalid csrf_token »или что-то в этом роде.

Как я могу это достичь?

ответ

2

Это потому, что форма не будет отправлена ​​вообще, если в данных POST отсутствует «facebook_login». Вы можете заставить его представить замену $facebookLoginForm->handleRequest($request);:

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

Спасибо, это сработало. Вы знаете, может ли этот метод использоваться с формами, содержащими поля 'file'? – Pipe

Смежные вопросы