Simple Form Widgets: Retrouvez-Nous Sur Www. Ou Sur Notre WWW
Simple Form Widgets: Retrouvez-Nous Sur Www. Ou Sur Notre WWW
{# src/Acme/StoreBundle/Resources/views/Default/index.html.twig #}
Embed Collection <form action="{{ path('store') }}" method="post" {{ form_enctype(form) }}>
{{ form_errors(form) }}
<?php {{ form_row(form.name) }}
// Elao\DemoBundle\Entity\Contact {{ form_row(form.price) }}
class Contact
{ {{ form_rest(form) }}
public $phones = array();
<input type="submit" />
public function __construct() </form>
{
$this->phones = array(new Phone(), new Phone(), new Phone()); Embed Form
}
} {{ form_row(form.price) }}
<?php <h3>Category</h3>
// Elao\DemoBundle\Entity\Phone <div class="category">
class Phone {{ form_row(form.category.name) }}
{ </div>
public $number;
} {{ form_rest(form) }}
Form Theming
<?php
// Elao\DemoBundle\Form\PhoneType {# src/Elao/BlogBundle/Resources/public/views/Form/fields.html.twig #}
$builder->add('number', 'text'); {% block form_row %}
{% spaceless %}
<?php <div class="form_row">
// Elao\DemoBundle\Form\ContactType {{ form_label(form) }}
$builder->add('phones', 'collection', array( {{ form_errors(form) }}
'type' => new PhoneType() {{ form_widget(form) }}
)); </div>
{% endspaceless %}
{% endblock form_row %}
Binding
{# src/Elao/BlogBundle/Resources/public/views/show.html.twig #}
<?php {% form_theme form 'ElaoBlogBundle:Form:fields.html.twig'}
public function newAction()
{
$request = $this->getRequest(); OR
if ('POST' === $request->getMethod()) {
$form->bind($request); # app/config/config.yml
if ($form->isValid()) { twig:
// treatment form:
} resources: ['ElaoBlogBundle:Form:fields.html.twig']
}
}
Constraints /**
* @Assert\MinLength(2)
All */
private $city;
Blank message
}
Callback methods
Choice choices, callback, multiple, strict, min, max, message, multipleMessage, minMessage, maxMessage // with the validator component
Collection fields, allowExtraFields, allowMissingFields, extraFieldsMessage, missingFieldsMessage $errors = $validator->validate($author, array('registration'));
Count minMessage, maxMessage, exactMessage, min, max
Country message // inside a Form class
Date message use Symfony\Component\OptionsResolver\OptionsResolverInterface;
DateTime message
public function setDefaultOptions(OptionsResolverInterface $resolver)
Email message, checkMX, checkHost {
False message $resolver->setDefaults(array(
File maxSize, mimeTypes, ... 'validation_groups' => array('registration')
));
Image mimeTypes, minWidth, maxWidth, maxHeight, minHeight, ...
}
Ip version, message
Language message
Length maxMessage, minMessage, exactMessage, max, min, charset Create custom constraints
Locale message
NotBlank message Constraint Class
NotNull message <?php
Null message use Symfony\Component\Validator\Constraint;
Range minMessage, maxMessage, invalidMessage, min, max
/**
Regex message, pattern, htmlPattern, match
* @Annotation
Time message */
True message class Foobar extends Constraint
Type message, type {
Url message, protocols public $message = 'This value should be "foobar"';
}
Constraint Validator
<?php
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
return true;
}
}