Squeak.ru - шаблоны программирования

Форма Symfony: CollectionType с разными прототипами

Есть ли способ построить форму с CollectionType с возможностью добавления разных прототипов.

Справочная информация: я хочу создать «Построитель страниц». Функциональность похожа на эту, но мне нужно интегрировать ее в существующее приложение.

Конструктор страниц с SuluCMF

Поэтому я должен добавить разные прототипы. Различные прототипы можно переключать с помощью поля выбора.

Должно быть несколько форм с разными полями формы. НАПРИМЕР. один для

  • Ссылка на продукт
  • Один элемент WYSIWYG
  • изображение с метаданными
  • так далее...

Форма должна быть максимально простой для пользователя. Поэтому мне нужна возможность добавить несколько прототипов.

Возможно ли это уже (и как)?

25.02.2016

  • Вы хотите интегрировать эту форму в Sulu Admin? Или это полноценное отдельное приложение, а скриншот только визуализация того, что вы хотите? 29.02.2016
  • Это всего лишь визуализация. Мне нравится вариант от Сулу, и я хочу иметь возможность добавлять n разных типов подряд, сохраняя при этом порядок и разные типы. До сих пор меня больше всего беспокоит проверка для разных типов. Я могу сделать это вручную, но надеялся как-то автоматизировать это, как в CollectionType. 29.02.2016

Ответы:


1

Изменить. Хотя ваш вопрос касался CollectionType, после более внимательного изучения вашего снимка экрана я думаю, вам просто нужно создать одну основную форму с несколькими дочерними формами и показать соответствующую дочернюю форму (с использованием javascript) в зависимости от выбора пользователя.

25.02.2016
  • Но как мне выполнить смешанные типы? Итак, он проверяет формы (которые добавляются с помощью js с использованием прототипа) с помощью правильной подчиненной формы? 26.02.2016
  • Вам не нужно использовать функцию прототипа только потому, что ваша форма является динамической, а некоторые ее части скрыты/показаны javascript. 26.02.2016

  • 2

    Если вы настаиваете на использовании CollectionType (я не вижу причин для этого на вашем скриншоте), вы можете сделать что-то вроде:

        $builder->add('entity1', CollectionType::class, [
            'label' => 'entity.recipe.entity1',
            'entry_type' => \AppBundle\Form\Type\Entity1Type::class,
            'allow_add' => true,
            'allow_delete' => true,
            'prototype' => true,
            'prototype_name' => '__EntityId__',
            'entry_options'  => ['required'  => false],
            ]);
    
        $builder->add('entity2', CollectionType::class, [
            'label' => 'entity.recipe.entity2',
            'entry_type' => \AppBundle\Form\Type\Entity2Type::class,
            'allow_add' => true,
            'allow_delete' => true,
            'prototype' => true,
            'prototype_name' => '__EntityId__',
            'entry_options'  => ['required'  => false],
            ]);
    ...
    

    Добавьте столько типов сущностей, сколько хотите, и каждый из них будет коллекцией с нулем или более элементов.

    26.02.2016
    Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...