Book Image

Extending Symfony2 Web Application Framework

By : Sebastien Armand
Book Image

Extending Symfony2 Web Application Framework

By: Sebastien Armand

Overview of this book

Table of Contents (13 chapters)

Forms based on user data


We had previously defined our form type as a service, so now we will change its configuration for it to take the user_locator service as the second argument, as shown in the following code:

khepin.form.type.coordinate:
    class: Khepin\BookBundle\Form\CoordinateType
    scope: prototype
    arguments: [@ivory_google_map.map, @user_locator]
    tags:
        - { name: form.type, alias: coordinate }

If you recall correctly, the user_locator service was in the request scope, but our form type is in the prototype scope. Since the prototype scope is more restrictive than the request scope, we don't have any issues here.

We will also update the default values of CoordinateType using the following code so that it always has a default value, which will be an empty coordinate:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults([
        'widget' => 'coordinate',
        'compound' => false,
        'data_class' => ...