Wizard
Wizard

Reputation: 11295

Symfony validate entity using form

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

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

I'm creating form from entity class where is setted data. If now I try use:

$userForm->isValid();

I'm getting true, because form data is not submitted, how I can do validation, without setting manually data to form and submitting ?

Upvotes: 2

Views: 900

Answers (2)

Chase
Chase

Reputation: 9362

Your question is worded a little strange and im not sure exactly what you want, If you want to manually set the data like above then call $form->submit() passing the user data.

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

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

If you want to have the user submit data on a form then do something like this:

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

$userForm->handleRequest(); will handle taking data that was submitted from the form on the page.

Upvotes: 0

Cameron Hurd
Cameron Hurd

Reputation: 5041

If you don't want to submit data to a form, skip forms entirely; use the Validator service directly:

<?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;

Upvotes: 2

Related Questions