如何从Symfony

时间:2016-08-01 15:09:15

标签: forms symfony

我想加载两个选项列表,第二个只加载一些基于第一选择的值。但我的问题首先......如何从与当前类(表单类型类)没有直接关系的类中加载第一个列表中的EntityType值。

->add(
    'cliente',
    EntityType::class,
    array(
        'class' => 'AppBundle:Cliente',
        'choice_label' => 'nombre',
    )
)

但是没有一个人能够拥有'此实体中的字段,因此它会抛出您知道的消息...

  

该物业" cliente"也没有其中一种方法" getCliente()",   " cliente()"," isCliente()"," hasCliente()"," __ get()"存在并拥有   课堂上的公共访问" AppBundle \ Entity \ Envio"。

拜托,您知道如何解决这个问题吗?欢迎任何帮助!

2 个答案:

答案 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();

希望这对你有所帮助。