Как сделать динамический c Select (ChoiceType)? - PullRequest
0 голосов
/ 08 февраля 2020

Поэтому я пытаюсь сгенерировать динамический c выбор для Таблица продуктов форма

вместо записи всех опций, подобных этой: (код из productType)

            ->add('id_cat', ChoiceType::class, [
                'choices'  => [
                    'cosmetique' =>'1',
                    'vetement' => '2',
                    'parfums' => '3',
                ],
            ])

Я хочу, чтобы выбор был сгенерирован из другой таблицы Категория (id, cat_name).

Например, вместо «cosmetique» отображается cat_name и вместо 1 он показывает id (а это значения, сгенерированные из базы данных из таблицы Category)

Я написал эту функцию, которая возвращает все значения из таблицы Category в таблице ($ tab)

public function cat (CategoryRepository $categoryRepository)
    {
        $allcat=$categoryRepository->findAll();
        $tab=[];    
        foreach($allcat as $cat) 
        {
            $tab=$cat->getId();
            $tab[$tab]=$cat->getCatname();

        }
        return $tab;
    }

Я не знаю, где именно я должен это разместить? и как отправить эту вкладку $ в ProductType. php page

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

Если у вас есть связь между двумя сущностями (и я полагаю, что у вас есть), вы можете легко использовать тип сущности из Symfony, чтобы избежать такой проблемы, которая покажет весь контент в таблице категорий и отправит выбранный объект в быть сохраненным в зависимости от вашей ассоциации:

$builder->add('category', EntityType::class, [
    'class' => Category::class,
    'choice_label' => 'cat_name',
]);

Или, если вы хотите сохранить свой путь, вы можете передать массив в качестве опции для вашей формы, но это не очень хорошая практика.

0 голосов
/ 08 февраля 2020

Почему бы просто не сделать tab [] чем-то вроде статически встроенного в него поля с именем 'choices' перед его заполнением, а затем добавить в него все я и категории и вернуть таблицу и вернуть результаты массива куда угодно?

tab['choices']=$cat->getID();
tab['choices'][tab['choices']]=$cat->getCatname();

А потом

for each ($choices as $choice)
For each ($choice as $category)
Print_r( $category)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...