custom form field bind avec attribut de l'entity
Salut à tous,
Voilà, j'ai passé la journée a essayer de mettre en place un champ number pour symfony car le type number proposer par Symfony est un input de type test....
Du coup j'ai commencé par écrire le type :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| <?php
namespace Echyzen\TestBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormInterface;
class NumberFieldType extends AbstractType
{
/**
* {@inheritDoc}
*/
public function getDefaultOptions(array $options)
{
$options = parent::getDefaultOptions($options);
return $options;
}
public function setDefaultOptions(OptionsResolverInterface $resolver){
$resolver->setDefaults(array( 'min' => 0));
$resolver->setDefaults(array( 'max' => 100));
$resolver->setDefaults(array( 'step' => 0));
$resolver->setDefaults(array( 'value' => 0));
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->setAttribute('min', $options['min']);
$builder->setAttribute('max', $options['max']);
$builder->setAttribute('step', $options['step']);
$builder->setAttribute('value', $options['value']);
}
/*public function buildView(FormView $view, FormInterface $form, array $options)
{
$view->set('min', $form->getAttribute('min'));
}*/
public function buildView (FormView $view, FormInterface $form, array $options)
{
//$form->offsetSet('min', 3);
$view->vars['min'] = $options['min'];
$view->vars['max'] = $options['max'];
$view->vars['step'] = $options['step'];
$view->vars['value'] = $options['value'];
}
/**
* {@inheritDoc}
*/
public function getName()
{
return 'number_field';
}
} |
Et enfin le widget en le référençant dans le app\config\config.yml vla.
Le problème du widget est que j'ai des problème pour le binder avec avec l'attribut de l'entité du coup j'ai le faire à la main mais cela ne fonctionne pas :s
Code:
1 2 3 4 5 6
| {# src\NewsBundle\Resources\views\Form\fields.html.twig #}
{% block number_field_widget %}
{% spaceless %}
<input id="{{ id }}" name="echyzen_testbundle_film[avis]"" type="number" step="{{ step }}" value="{{ value }}" min="{{ min }}" max="{{ max }}" />
{% endspaceless %}
{% endblock %} |
Et bien sur il dit que la valeur est vide du coup pas d'insert valeur pas valid normale il y a rien XD
Ski une âme sensible peut m'aider j'en serais ravis :D