我想加载两个选项列表,第二个只加载一些基于第一选择的值。但我的问题首先......如何从与当前类(表单类型类)没有直接关系的类中加载第一个列表中的EntityType值。
->add(
'cliente',
EntityType::class,
array(
'class' => 'AppBundle:Cliente',
'choice_label' => 'nombre',
)
)
但是没有一个人能够拥有'此实体中的字段,因此它会抛出您知道的消息...
该物业" cliente"也没有其中一种方法" getCliente()", " cliente()"," isCliente()"," hasCliente()"," __ get()"存在并拥有 课堂上的公共访问" AppBundle \ Entity \ Envio"。
拜托,您知道如何解决这个问题吗?欢迎任何帮助!
答案 0 :(得分:0)
根据您的错误,您的表单适用于实体Envio。如果要基于Cliente实体创建EntityType选择列表,则需要在Envio类中使用学说关系:
class Envio
{
/*
* @ORM\ManyToOne(targetEntity="Cliente")
*/
protected $cliente;
该错误与您关于拥有2个选择列表并根据第一个选择更改第二个列表的选择的问题无关。你可能最好使用javascript,你可以从AJAX中选择很多选项来根据值或者innerText来限制选择。
答案 1 :(得分:0)
对于该错误,您需要将该字段设为'映射' =>是的,所以:
->add(
'cliente',
EntityType::class,
array(
'class' => 'AppBundle:Cliente',
'choice_label' => 'nombre',
'mapped' => false
)
)
然后,要获取控制器中的属性,您必须执行以下操作:
$cliente = $form->get('cliente')->getData();
希望这对你有所帮助。