Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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_Symfony Forms - Fatal编程技术网

根据项目状态处理symfony表单中下拉项目的最佳方法是什么? 让我们考虑下面这样的场景:

根据项目状态处理symfony表单中下拉项目的最佳方法是什么? 让我们考虑下面这样的场景:,symfony,symfony-forms,Symfony,Symfony Forms,实体车有多对多的CarType,这是一个不同类型的列表,每个类型可以是活动的或非活动的 车辆形式: $builder->add('type', 'entity', array( 'label' => 'Car Type', 'class' => 'SomeBundle:CarType', 'query_builder' => function (EntityReposi

实体车有多对多的CarType,这是一个不同类型的列表,每个类型可以是活动的或非活动的

车辆形式:

$builder->add('type', 'entity', array(
            'label'         => 'Car Type',
            'class'         => 'SomeBundle:CarType',
            'query_builder' => function (EntityRepository $er) {
                $qb = $er->createQueryBuilder('type')
                        ->where('type.status = :status')
                        ->setParameter('status', 'active')
                ;
                return $qb;
            }
        ));
在创建阶段,用户使用激活的
类型创建
汽车
。假设我有一个管理员页面来标记
Type
active/inactive

处理与非活动
类型
相关的
汽车
编辑阶段的最佳方法是什么?换句话说,如果
汽车
与任何在某个点处于活动状态但不再处于活动状态的
类型
有关系,则该选项将不会显示在下拉列表中

处理这样一个用例的最佳方法是什么?DropdOn项在不同的时间段内可以有不同的状态,但query只返回活动的状态


一种方法是提醒用户,
Car
正在使用一些非活动的
类型
,但是还有其他更好的方法吗

您可以在管理员级别处理该问题 (比如如果他还在使用,你就不能将其设置为非活动的carType)

或者处理用户级别的问题:
您仅建议活动车辆+非活动当前用户选择的选项。
这样,用户只能选择更改为活动车型或保留过时车型

$qb = $er->createQueryBuilder('type')
    ->where('type.status = :status')
    ->orWhere('id = :currentTypeId')
    ->setParameter('currentTypeId', $someId)
    ->setParameter('status', 'active')

)

想想在现实世界中,非活动类型意味着什么。汽车在创建后更改其类型(在应用程序的域中)有意义吗?如果答案为“否”,则可能不应在编辑时呈现
类型
字段。如果答案是肯定的,那么对于那些现在使用非活动车型的汽车,您预计会发生什么情况?很多时候,称为“类型”的属性表示OOP设计不好,也许你应该拥有像
轿车
敞篷车
,等等这样的实体。@RenanTaranto如果管理员创建了一辆车,请输入一个错误。他不能改变汽车的类型吗?@goto实际上,他的问题是如何从普通用户的角度处理它,而不是管理员的角度。我的意思是,为了实现这些场景的良好解决方案,我们应该分析应用程序中的每个实体上下文。这个问题没有最终的单一答案。让我们假设在我的上下文中更改汽车类型是有意义的。@p如果它是一个汽车定制商店的应用程序,例如,您可以有一个名为“自定义为可转换”的按钮,而不是呈现类型字段。在这个虚构的上下文中,非活动类型意味着商店不再执行该修改,并且当非活动类型的汽车变为非活动类型时,您不会期望具有非活动类型的汽车改变它。