根据项目状态处理symfony表单中的下拉项目的最佳方法是什么?

时间:2017-04-12 21:35:33

标签: symfony symfony-forms

让我们考虑以下情况:

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

车型:

sapply(indata, class)
      Datum  Eroeffnung        Hoch        Tief     Schluss 
"character"   "numeric"   "numeric"   "numeric"   "numeric" 
    Volumen 
  "numeric" 

在创建阶段,用户创建一个有效$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; } )); 的{​​{1}}。假设我有一个管理页面标记Car有效/无效。

处理与非活动Type有关系的Type编辑阶段的最佳方法是什么?换句话说,如果Car与某个时间点处于活动状态并且不再处于活动状态的任何Type有关系,则该选项不会显示在下拉列表中。

处理像这样的用例的最佳方法是什么dropdwon项目在不同的时间范围内可以具有不同的状态,但查询只返回活动的?

一种方法是提醒用户Car正在使用某些不活跃的Type,但还有其他更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以在管理级别处理问题 (如果他仍然使用过汽车类型,你就不能使其失效)

或者您使用用户级别处理:
您建议只选择主动车+当前不活动的用户选择 这样,用户只能选择更改为活动类型的汽车或保持其过时类型

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