6. Creating a Simple Form:
Controller
class DefaultController extends Controller
{
public function newAction(Request $request)
{
$clip = new Clip();
$form = $this->createFormBuilder($clip)
//...
->getForm();
$form->handleRequest($request);
if ($form->isValid()) {
// perform some action, such as saving the task to the database
return $this->redirect($this->generateUrl('clip_success'));
}
//
}
}
8. Validation service
$clip = new Clip();
//...
$validator = $this->get('validator');
$errors = $validator->validate($clip);
if (count($errors) > 0) {
return new Response(print_r($errors, true));
} else {
return new Response('The clip is valid!');
}
9. Creating Form Classes
// src/Volcano/VideoBundle/Form/Type/ClipType.php
namespace VolcanoVideoBundleFormType;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
class ClipType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('url','text');
$builder->add('timeStart', 'integer');
//...
}
public function getName()
{
return 'task';
}
}
10. Creating a Simple Form:
Controller
class DefaultController extends Controller
{
public function newAction(Request $request)
{
$clip = new Clip();
$form = $this->createForm(new ClipType(), $clip);
$form->handleRequest($request);
if ($form->isValid()) {
// perform some action, such as saving the task to the database
return $this->redirect($this->generateUrl('clip_success'));
}
//
}
}
11. Creating Form Classes
// src/Volcano/VideoBundle/Form/Type/ClipType.php
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'VolcanoVideoBundleEntityClip',
));
}
24. Form theming:
Individual field
{% form_theme form _self %}
{% block _form_url_row %}
<div class="url">
{{ form_label(form) }}
{{ form_errors(form) }}
{{ form_widget(form) }}
</div>
{% endblock %}
25. Embedding a Collection of
Forms
// src/Volcano/VideoBundle/Form/Type/TagType.php
class TagType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name');
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'VolcanoVideostatusBundleEntityTag',
));
}
public function getName()
{
return 'tag';
}
}
26. Embedding a Collection of
Forms
// src/Volcano/VideoBundle/Form/Type/ClipType.php
class ClipType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('url','text');
$builder->add('timeStart', 'integer');
//...
$builder->add('tags', 'collection', array(
'type' => new TagType(),
'allow_add' => true,
'allow_delete' => true
)
);
}
}