很抱歉打扰您,但我想获得表格验证的最大值,例如,它可以是一个数字字段,但类型范围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'
]);
}