voici grossièrement ce que je ferais :
* creer un formtype qui represente une ligne : ligneFormType
1 2 3 4 5 6 7
|
...
public function buildForm(FormBuilderInterface $builder, array $options)
{
for ($annee=$annee1; $annee<=$annee2; $annee++) // annee1=2016 annee2=2017 provenant du filtre
$builder->add('total_'.$annee, 'number', ['empty_data' => 0])
... |
* après, je ne sais pas comment tu récupères les produits: "echarpes bleu", "echarpe blanc"...
donc faire un formType : tableauFormType
1 2 3 4 5 6 7
|
...
public function buildForm(FormBuilderInterface $builder, array $options)
{
for ($nb=0; $nb<=count($produits); $nb++) // produits ( "echarpes bleu", "echarpe blanc")
$builder->add('ligne_' . $ns, class::formType, 'ligneFormType');
... |
* en faisant un dump de $tableauFormType->createView() tu va voir la structure en global du formulaire
* dans twig, pour l'affichage. utiliser cette technique pour personnaliser l'affichage du formulaire. (les variables de l'exemple n'ont aucun rapport avec ton sujet)
1 2 3 4 5
|
{% for key,value in form.user %} {# key is the ID in the database table #}
{{ form_widget(value, {'label':value.vars.label}) }}
{{ form.user.vars.choices[key].data.moneyLeft }} {# this syntax is new #}
{% endfor %} |
*
remarque :
chaque champ représente un total.
pour saisir les valeurs en mensuel, semestriel etc... tu fais ça avec jQuery + modal
à chaque changement du filtre (année etc..) il faut reconstruire les formType
Partager