PHP Collectiontype дизайн формы ветки - PullRequest
0 голосов
/ 12 июня 2018

Я следовал руководству о том, как сделать форму / веточку для типа коллекции.У меня сейчас проблема в том, что мне нравится менять дизайн формы, но я понятия не имею, как это сделать.Я хочу иметь атрибут «Aantal» рядом с «Artikel».Поэтому я надеюсь, что вы, ребята, можете помочь мне с этим.

enter image description here

Форма веточки

{% extends 'layout/default.html.twig' %}

{% block title %}{{ title }}{% endblock %}

{% block content %}

    <div class="container">
        <div class="row">
            <div class="col-md-12">
                <br>
                <h1>{{ title }}</h1>
                <form method="post" action="">
                    {{ form_start(form) }}
                    {{ form_row(form.bestelordernummer) }}
                    {{ form_row(form.leverancier) }}
                    {{ form_row(form.keuringseisen) }}
                    {{ form_label(form.bestelregels) }}
                    <ul id="bestelregels-fields-list"
                        data-prototype="{{ form_widget(form.bestelregels.vars.prototype)|e }}"
                        data-widget-tags="{{ '<li></li>'|e }}">
                        {% for bestelregelField in form.bestelregels %}
                            <li>
                                {{ form_errors(bestelregelField) }}
                                {{ form_widget(bestelregelField) }}
                            </li>
                        {% endfor %}
                    </ul>

                    <a href="#"
                       class="add-another-collection-widget"
                       data-list="#bestelregels-fields-list">Bestelregel toevoegen</a>

                    <hr />

                    <input class="btn btn-default" type="submit">
                    <a href="javascript:history.back()">Annuleren</a>

                    <div style="display: none;">
                        {{ form_end(form) }}
                    </div>
                </form>
            </div>
        </div>
        <hr>
    </div>
{% endblock %}

Custom.js

jQuery(document).ready(function () {
    jQuery('.add-another-collection-widget').click(function (e) {
        e.preventDefault();
        var list = jQuery(jQuery(this).attr('data-list'));
        // Try to find the counter of the list
        var counter = list.data('widget-counter') | list.children().length;
        // If the counter does not exist, use the length of the list
        if (!counter) { counter = list.children().length; }

        // grab the prototype template
        var newWidget = list.attr('data-prototype');
        // replace the "__name__" used in the id and name of the prototype
        // with a number that's unique to your emails
        // end name attribute looks like name="contact[emails][2]"
        newWidget = newWidget.replace(/__name__/g, counter);
        // Increase the counter
        counter++;
        // And store it, the length cannot be used if deleting widgets is allowed
        list.data(' widget-counter', counter);

        // create a new list element and add it to the list
        var newElem = jQuery(list.attr('data-widget-tags')).html(newWidget);
        newElem.appendTo(list);
    });
});

Форма для 'Bestelordernummer, Leverancier and Keuringseisen'

<?php

namespace AppBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\TextType;


class BestellingType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        //gebruiken wat je nodig hebt, de id hoeft er niet bij als deze auto increment is
        $builder
            ->add('bestelordernummer', IntegerType::class) //naam is b.v. een attribuut of variabele van klant
        ;
        $builder
            ->add('leverancier', TextType::class) //naam is b.v. een attribuut of variabele van klant
        ;
        $builder
            ->add('keuringseisen', TextType::class, array ('required' => false)) //naam is b.v. een attribuut of variabele van klant
        ;
        $builder
            ->add('bestelregels', CollectionType::class, [
                'entry_type' => BestelregelType::class,
                'allow_add' => true
            ])
        ;
    }

    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\Bestelling'
        ));
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'appbundle_bestelregel';
    }


}

Форма для 'Artikel and Aantal'

<?php

namespace AppBundle\Form\Type;

use AppBundle\Entity\Artikel;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\TextType;

class BestelregelType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        //gebruiken wat je nodig hebt, de id hoeft er niet bij als deze auto increment is
        $builder
            ->add('artikel', EntityType::class, [
                'class' => 'AppBundle:Artikel',
                'choice_label' => function (Artikel $artikel) {
                    return $artikel->getArtikelnummer() . ' - ' . $artikel->getOmschrijving() . ' - Bestelserie: ' . $artikel->getBestelserie();
                }
            ])
            ->add('aantal');
    }

    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\Bestelregel'
        ));
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'appbundle_bestelregel';
    }


}

Заранее спасибо.

1 Ответ

0 голосов
/ 13 июня 2018
{% for bestelregelField in form.bestelregels %}
    <li>
        {{ form_errors(bestelregelField) }}
        <div class="row">
             <div class="col-md-8">
                 {{ form_widget(bestelregelField.artikel) }}
             </div>
             <div class="col-md-4">
                 {{ form_widget(bestelregelField.aantal) }}
             </div>
        </div>
    </li>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...