PHP Collectiontype form веточка дизайн

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

PHP Collectiontype form веточка дизайн

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

{% 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';
    }


}

Форма для "Артикель и Аантал"

<?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';
    }


}

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
109
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
{% 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 %}

Спасибо за ответ, но, к сожалению, он не работает. Вроде пропускает.

Mr J. 13.06.2018 02:13

Другие вопросы по теме