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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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