获取自DB symfony 4以来的最大值形式



很抱歉打扰您,但我想获得表格验证的最大值,例如,它可以是一个数字字段,但类型范围MaxValue的验证必须在数据库中检索。我解释了自己,例如,我想预订一辆运输车,默认情况下,剩余4个位置的最大值为4,但如果这辆车还有3个位置,验证必须通过3个

我试图通过事件的实体类型,但它没有改变我的问题,它在下拉列表中返回了每辆车的所有位置。

目标是让一个简单的表单成为一个预订按钮,只需要一种选择名额的方式,而不能超过数据库的值。

例如,URL是/transport/6/book

我们必须找到一种方法来传递id号6的值,例如,验证将在1和3之间,或者创建一个列表,将1 2 3

如果运输7至1个可用地点,则必须仅为1。

如果我说错了,请原谅,但我已经做了一个多星期了,我无法让它发挥作用,所以我转向了一个旧的承诺,以保持应用程序的工作。我是这方面的初学者,所以我不知道表单的高级功能,但我非常擅长树枝存储库等。只是这部分被阻止了,提前感谢您的帮助。

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nbPlaces', EntityType::class, [
'class' => Transport::class,
'label' => 'Nombre de places',
'attr' => [
'placeholder' => "Nombre de places",
],
'query_builder' => function (TransportRepository $transportRepository) use ($id_service) {
return $transportRepository->findOneByIdPlace($id_service);
},
'choice_label' => 'nbPlaces'
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Reservation::class,
'id_service' => null
]);
}

和控制器

$booking = new Reservation();
$form = $this->createForm(ReservationType::class, $booking, ['id_service' => $service]);

$id_service是使用时未定义的变量

这是因为从未定义过$id_service。你应该从选项中得到它。看看这里:https://symfony.com/doc/current/forms.html#other-的常见形式特征

所以你的代码应该是这样的。

public function buildForm(FormBuilderInterface $builder, array $options)
{
$id_service = $options['id_service'];
$builder
->add('nbPlaces', EntityType::class, [
'class' => Transport::class,
'label' => 'Nombre de places',
'attr' => [
'placeholder' => "Nombre de places",
],
'query_builder' => function (TransportRepository $transportRepository) use ($id_service) {
return $transportRepository->findOneByIdPlace($id_service);
},
'choice_label' => 'nbPlaces'
]);
}

最新更新