我从symfony 2开始,我想显示一个"选择"类型的数据库中的数据,但我有一个问题:
添加操作:
public function addAction()
{
$categories = new CategoriesAnnonce();
$form = $this->get('form.factory')->create(new AddFormType($categories),$categories);
return $this->render('AnnoncesBundle::add.html.twig', array(
'form' => $form->createView(),
));
}
添加表单类型. php:
<?php
namespace AnnoncesBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Validator\Constraints as Assert;
class AddFormType extends AbstractType
{
private $cat;
public function __construct(CategoriesAnnonce $categories)
{
$this->cat = $categories->getNomSousCategorie();
}
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('titre', 'text')
->add('categories', 'choice', array(
'choices' => $this->cat,
));
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AnnoncesBundle\Form\Model\Add',
));
}
public function getName()
{
return 'Add';
}
}
?>
错误:
Catchable Fatal Error: Argument 1 passed to AnnoncesBundle\Form\Type\AddFormType::__construct() must be an instance of AnnoncesBundle\Form\Type\CategoriesAnnonce, instance of AnnoncesBundle\Entity\CategoriesAnnonce given, called in /Users/jordan/Desktop/www/Lesbonnesaffaires/src/AnnoncesBundle/Controller/DefaultController.php on line 69 and defined
1条答案
按热度按时间a5g8bdjr1#
它使用文件中定义的名称空间,而不是
CategoriesAnnonce
所属的正确名称空间。添加use
语句:use AnnoncesBundle\Entity\CategoriesAnnonce
或者将类型提示更改为FQCN,例如:
谢谢,但我现在有另一个问题:
窗体的视图数据应为类AnnoncesBundle\Form\Model\Add的示例,但实际上却是类AnnoncesBundle\Entity\CategoriesAnnonce的示例。可以通过将“data_class”选项设置为null或添加视图转换器(将类AnnoncesBundle\Entity\CategoriesAnnonce的示例转换为AnnoncesBundle\Form\Model\Add的示例)来避免此错误。
发生这种情况是因为您将data_class设置为
AnnoncesBundle\Form\Model\Add
:但你想通过它
AnnoncesBundle\Entity\CategoriesAnnonce
我认为你需要修改你的代码。不幸的是,我不能给予细节,因为我不知道
AnnoncesBundle\Form\Model\Add
和AnnoncesBundle\Entity\CategoriesAnnonce
是什么,以及它们是如何联系或应该如何交互的。但我怀疑你对创建一个***表单类感到困惑***创建一个定制的field type,可能还有如何创建类层次结构以及不同的组件应该做什么。我会回顾forms chapter of the book和custom field type cookbook entry。然后,如果您有问题,请使用实体/模型、表单和字段类型类中的相关代码创建一个关于细节的新问题。