Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有实体类型字段和多个实体的symfony表单_Symfony_Entity_Choice - Fatal编程技术网

具有实体类型字段和多个实体的symfony表单

具有实体类型字段和多个实体的symfony表单,symfony,entity,choice,Symfony,Entity,Choice,我有两个具有某些属性的实体: 类别 类别名称 类别说明 子类别 子类别名称 子类别描述 类别ID(多通关系) 子类别实体中存在多个子类别关系,即多个子类别可以连接到一个类别 我想构建一个包含所有子类别下拉列表的表单,但我想显示类别和子类别的名称,列表如下所示: 类别1-子类别1 类别1-子类别2 类别1-子类别3 类别2-子类别1 类别2-子类别2 类别2-子类别3 等等 我正在考虑在subcategory类中创建一个getter,该getter将返回类别名称和子类别名称的串联,类似

我有两个具有某些属性的实体:

  • 类别
    • 类别名称
    • 类别说明
  • 子类别
    • 子类别名称
    • 子类别描述
    • 类别ID(多通关系)
  • 子类别实体中存在多个子类别关系,即多个子类别可以连接到一个类别

    我想构建一个包含所有子类别下拉列表的表单,但我想显示类别和子类别的名称,列表如下所示:

    • 类别1-子类别1
    • 类别1-子类别2
    • 类别1-子类别3
    • 类别2-子类别1
    • 类别2-子类别2
    • 类别2-子类别3
    • 等等
    我正在考虑在subcategory类中创建一个getter,该getter将返回类别名称和子类别名称的串联,类似于sprintf(“%s-%s”,$this->categoryName,$this->subcategoryName),但我看不出如何使用subcategory类getter访问类别对象属性

    你知道实现这一目标的最佳实践吗

    谢谢,,
    JM

    我通过如下方式构建表单来实现这一点:

            $builder
             ->add('subcategoryName', EntityType::class, array(
              'class'    => 'AppBundle:subcategory',
              'query_builder' => function(EntityRepository $er) {
                return $er->createQueryBuilder('u')
                    ->addSelect('t')
                    ->join('u.category', 't' )
                    ->orderBy('t.category', 'ASC')
                    ->addOrderBy('u.subcategory', 'ASC');
              },
              'choice_label' => function($subcategoryname){
                return $categoryname->getcategory()->getcategoryname() . " - " . $subcategoryname->getsubcategoryName();
              },
              'multiple' => false,
              'expanded' => false,
                ))
    
    我只是在选择标签选项上挣扎了一下


    /JM

    我通过如下方式构建表单来实现这一点:

            $builder
             ->add('subcategoryName', EntityType::class, array(
              'class'    => 'AppBundle:subcategory',
              'query_builder' => function(EntityRepository $er) {
                return $er->createQueryBuilder('u')
                    ->addSelect('t')
                    ->join('u.category', 't' )
                    ->orderBy('t.category', 'ASC')
                    ->addOrderBy('u.subcategory', 'ASC');
              },
              'choice_label' => function($subcategoryname){
                return $categoryname->getcategory()->getcategoryname() . " - " . $subcategoryname->getsubcategoryName();
              },
              'multiple' => false,
              'expanded' => false,
                ))
    
    我只是在选择标签选项上挣扎了一下


    /JM

    您可以使用此方法,这一点很清楚。当您有IdCategory of Subcategory表时,您也可以访问fields Category表

     ->add('idCategory', EntityType::class,array(
                    'data'   =>  $options[0]['idCategory'],
                    'class' => 'AppBundle:subcategory',
                    'choice_label' => function (subcategory $subcategory) {
                        return $subcategory->getName() . '-' . $subcategory->getCategoryID()->getName().'-'.$subcategory->getCategoryID()->getDescription();
                    },
                    'attr' => array(
                        'label'    => 'Category ',
                        'class' => 'form-control'
                    )
                ))
    

    很明显,您可以使用此方法。当您有IdCategory of Subcategory表时,您也可以访问fields Category表

     ->add('idCategory', EntityType::class,array(
                    'data'   =>  $options[0]['idCategory'],
                    'class' => 'AppBundle:subcategory',
                    'choice_label' => function (subcategory $subcategory) {
                        return $subcategory->getName() . '-' . $subcategory->getCategoryID()->getName().'-'.$subcategory->getCategoryID()->getDescription();
                    },
                    'attr' => array(
                        'label'    => 'Category ',
                        'class' => 'form-control'
                    )
                ))