我正在创建一个选择,它将一个实体的数据称为category。在Symfony3中的表单类型中自定义选择
我想要开发的选择基本上与我开发和工作的选择相同,但具有从类别实体获取的值。
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use BackendBundle\Entity\Categoria;
use BackendBundle\Entity\CategoriaRepository;
class ProductoType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nombre', TextType::class, array(
'label' => 'Nombre',
'required' => 'required',
'attr' => array(
'class' => 'form-name form-control'
)
))
->add('categoria', ChoiceType::class, array(
'choices' => array(
'General' => '1',
'Coffe' => '2'
),
'required' => false,
'empty_data' => null
))
->add('Save', SubmitType::class, array(
"attr" =>array(
"class" => "form-submit btn btn-success"
)
))
;
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'BackendBundle\Entity\Producto'
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'backendbundle_producto';
}
}
我想补充类似下面的部分,但我得到的错误未能加载类型“实体”
->add('categoria', 'entity', array(
'class' => 'BackendBundle:Categoria'
)
)
原来BBDD在Object of class \BackendBundle\Entity\Categoria could not be converted to string
这个类是在src \ BackendBundle \ Entity \ Categoria.php ,它有 ' 使用Doctrine \ ORM \ EntityRepository; 使用BackendBundle \ Entity \ Categoria; 使用BackendBundle \ Entity \ CategoriaRepository; public function __toString() { return $ this-> getName(); } }' 我把在形成本 ' - >加( 'categoria',的EntityType ::类,阵列( '类'=> Categoria ::类 ) ) ' 和误差是相同的“无法加载类型”EntityType :: Categoria“” 任何想法@拉斐尔桑托斯?在此先感谢 – Manply
再次审查上述响应,更新了更多的细节,并使用整个类名避免混淆。 – rafrsr