2016-10-21 10 views
2
$userData = (new User()) 
     ->setPersonCode(123) 
     ->setPhone('+470002342342342'); 

    $userForm = $this->toolbar->getForm(UserType::class, $userData); 

私はエンティティクラスからフォームを作成しています。今なら、私は使用してみてください。symfonyはフォームを使用してエンティティを検証します

$userForm->isValid(); 

私はtrueを取得していますフォームデータが提出されていないため、どのように私は形成するために、データを手動で設定して送信せず、検証を行うことができますか?

答えて

2

フォームにデータを送信しない場合は、フォームを完全にスキップします。パッシング)(sumbit>手動ます$ form-を呼び出し、その後上記のようなデータを設定したい場合はあなたの質問は、正確に何をしたいかわからない少し奇妙でイム言葉で表現されて

<?php 

// (Assuming you're in a controller, otherwise inject the validator some other way.) 

$userData = (new User()) 
    ->setPersonCode(123) 
    ->setPhone('+470002342342342'); 

$validator = $this->get('validator'); 
$errors = $validator->validate($userData); 
$isValid = count($errors) === 0; 
+0

バリデータ 'Assert \ IsTrue'アノテーションで使用できますか? – Wizard

+0

Modelクラスでそれらを 'validate'関数に渡した場合、それは認識されます。 –

0

:直接Validatorサービスを使用しますユーザーデータ。

$userData = (new User()) 
    ->setPersonCode(123) 
    ->setPhone('+470002342342342'); 

$userForm = $this->toolbar->getForm(UserType::class); 
$userForm->sumbit($userData); 
if(!$userForm->isValid()){ 
    // handle errors 
} 

ユーザーがフォーム上のデータを提出したい場合、このような何か:

public function createUserAction(Request $request) 
{ 
    $userForm = $this->toolbar->getForm(UserType::class); 
    $userForm->handleRequest(); 
    if(!$userForm->isValid()){ 
     // handle errors 
    } 
} 

$userForm->handleRequest();は、ページ上のフォームから送信されたデータを取って処理します。

+0

'$ form-> sumbit()'をどのように呼び出すことができますか?私はデータ配列を持っていません。 – Wizard

+0

@Wizardどこからデータが来ると期待していますか?そのフォームの場合は、2番目のメソッドを使用します – Chausser

関連する問題