如何在symfony 3中设置选定的EntityType字段

时间:2017-01-09 01:28:33

标签: php doctrine-orm symfony

我的表单类型中有EntityType类,它从我的一个表中生成数据。

我的问题是当我尝试使用doctrine方式将其插入我的数据库时,该实体类型字段返回{}值。

这是确切的数据库错误:

An exception occurred while executing 'INSERT INTO sub_agent (company_id, name, email_address, telephone_no, mobile_no, website, registered, ip) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [{}, "test", "test@gmail.com", "test", "test", null, "2017-01-09 09:15:42", "127.0.0.1"]:

当我在控制器中使用var_dump调试该实体字段时,我发现company_id正在从我的company entity class返回一个对象。

这是我的sub_agent_type表格

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('company_id', EntityType::class, array(
        'label' => 'Company',
        'mapped' => false,
        'required' => true,
        'class' => 'SwipeBundle\Entity\Company',
        'choice_label' => 'name',
        'choice_value' => 'id',
        'expanded' => false,
        'multiple' => false,
        'placeholder' => 'Choose a Company',
        'constraints' => array(
            new NotBlank(array("message" => 'Company name is required.')),
        ),            
    ));  
}

如何将我的实体字段(下拉列表)的选定值设置为我的表单以保存在我的数据库中?这是我的实体字段生成的树枝。

<select id="sub_agent_company_id" name="sub_agent[company_id]" required="required">
    <option value="" selected="selected">Choose a Company</option>
    <option value="20">ABC</option>
    <option value="21">EFG</option>
    <option value="22">HIJ</option>
</select>

这是我的控制器:

 if ($form->isSubmitted() && $form->isValid()) {

    $data = $form->getData();

    $sub_agent_name = $data->getName();

    $company_id = $data->getCompanyId();

    var_dump($company_id); exit

1 个答案:

答案 0 :(得分:1)

在您的类别实体中,您应该:

public function __toString() {
   return $this->id;
}