symfony 在属性路径“name”处指定的应为“string”类型的“App\Entity\Location”参数

n3schb8v  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(107)

代码如下:

class McsType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options): void
    {
        $builder
            ->add('name', EntityType::class,[
                'class' => Location::class,
                'label' => 'For The Location',
                'choice_label' => function(Location $location){
                    return $location->getName();
                }
            ])
            
            ->add('mcs', CollectionType::class,[
                'entry_type'=> McType::class,
                'entry_options' => ['label' => false ],
                'by_reference' => false,
                'allow_add' => true,
                'allow_delete' => true
            ]);
        ;
    }

    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setDefaults([
            // 'data_class' => '',
        ]);
    }
}

我得到的错误如下:
在属性路径“name”处指定的应为“string”类型的“App\Entity\Location”参数。
为了解决这个问题,我尝试用位置重命名名称不起作用。当我点击提交按钮时,我得到了上面的错误。
即使把数据类也没有任何帮助。

r55awzrz

r55awzrz1#

看起来这个问题是关于你的Location类的。它不能像预期的那样被转换为字符串。所以你需要实现神奇的方法__toString()

public function __toString(): string
{
  return $this->name;
}

相关问题