Php 表格';s视图数据应为另一个类的实例创建另一个实体的窗体实例时出错
尝试从另一个实体创建表单以传递到我的视图时,出现以下错误 在此上下文中,我有两个实体Php 表格';s视图数据应为另一个类的实例创建另一个实体的窗体实例时出错,php,symfony,sylius,Php,Symfony,Sylius,尝试从另一个实体创建表单以传递到我的视图时,出现以下错误 在此上下文中,我有两个实体CourseGuide和CourseGuideRow,我想通过CourseGuideRowType的表单视图传递给我的视图-我该如何做 表单的视图数据应该是类的实例 CRMPicco\CourseBundle\Entity\CourseGuide,但是类的实例 CRMPicco\CourseBundle\Entity\CourseGuideRow。您可以避免此错误 通过将“data_class”选项设置为null
CourseGuide
和CourseGuideRow
,我想通过CourseGuideRowType
的表单视图传递给我的视图-我该如何做
表单的视图数据应该是类的实例
CRMPicco\CourseBundle\Entity\CourseGuide,但是类的实例
CRMPicco\CourseBundle\Entity\CourseGuideRow。您可以避免此错误
通过将“data_class”选项设置为null或添加视图
转换类实例的转换器
CRMPicco\CourseBundle\Entity\CourseGuideRow到的实例
CRMPicco\CourseBundle\Entity\CourseGuide
这是我的控制器:
// CourseGuideController.php
public function viewAction(Request $request)
{
if (!$courseId = $request->get('id')) {
throw new NotFoundHttpException('No Course ID provided in ' . __METHOD__);
}
$resource = $this->get('crmpicco.repository.course_guide_row')->createNew();
$form = $this->getForm($resource);
// ...
}
我的Symfony FormBuilder类:
// CourseGuideRowType.php
use Sylius\Bundle\ResourceBundle\Form\Type\AbstractResourceType;
use Symfony\Component\Form\FormBuilderInterface;
class CourseGuideRowType extends AbstractResourceType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('channel', 'crmpicco_channel_choice', array('data_class' => null))
->add('name', 'text')
->add('courses', 'text')
;
}
/**
* @return string name
*/
public function getName()
{
return 'crmpicco_course_guide_row';
}
}
我尝试了别处提到的data\u class=>null
建议,但没有效果
如果我像这样通过data_类:
$form = $this->getForm($resource, array('data_class' => 'CRMPicco\CourseBundle\Entity\CourseGuideRow'));
然后我得到这个:
属性“translations”或其中一个方法
“getTranslations()”、“translations()”、“isTranslations()”,
“hasTranslations()”、“\uuu get()”在类中存在并具有公共访问权限
“CRMPicco\CourseBundle\Entity\CourseGuideRow”
为什么会这样?有附加到
课程指南
实体的翻译,但没有附加到CourseGuideRow
尝试在表单类型中添加此函数:
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'YourBundle\Entity\YourEntity',
));
}
不要忘记具体用途:
使用Symfony\Component\OptionsResolver\OptionsResolver代码>
编辑
在本机Symfony中(使用表单组件):
尝试在FormType中添加此函数:
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'YourBundle\Entity\YourEntity',
));
}
不要忘记具体用途:
使用Symfony\Component\OptionsResolver\OptionsResolver代码>
编辑
在本机Symfony中(使用表单组件):
尝试在FormType中添加此函数:
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'YourBundle\Entity\YourEntity',
));
}
不要忘记具体用途:
使用Symfony\Component\OptionsResolver\OptionsResolver代码>
编辑
在本机Symfony中(使用表单组件):
尝试在FormType中添加此函数:
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'YourBundle\Entity\YourEntity',
));
}
不要忘记具体用途:
使用Symfony\Component\OptionsResolver\OptionsResolver代码>
编辑
在本机Symfony中(使用表单组件):
谢谢,但是没有任何效果。我仍然看到相同的错误。是crmpicco.repository.course\u guide\u row
在一个表单类型中返回getName()方法?不是,但我认为不应该是。我正在使用Sylius并在这里调用getForm
方法。我已经用我最新的更改和新的错误消息更新了我的问题,这让我觉得其他地方有问题。事实上,我得到了更正-似乎我应该将表单名称传递给…但是传递给createForm
。在本机Symfony中(带有表单组件):$form=$this->createForm('name_of_your_form_type',the_entity_object);
和响应:返回$this->render('your_template.html.twig',['form'=>$form->createView());
谢谢,但没有任何效果。我仍然看到相同的错误。是crmpicco.repository.course\u guide\u行
返回getName()方法?它不是,但我不认为应该是。我正在使用Sylius并在此处调用getForm
方法。我已使用最新的更改和新的错误消息更新了我的问题,这使我认为其他地方有问题。实际上,我得到了更正-似乎我应该传递表单名称通过…但改为createForm
。在本机Symfony中(使用表单组件):$Form=$this->createForm(\u表单类型的名称,\u实体\u对象);
和响应:返回$this->render('your\u template.html.twig',['Form=>Form->$Form->createView())
谢谢,但没有任何效果。我仍然看到相同的错误。是crmpicco.repository.course\u guide\u row
返回getName()方法?它不是,但我不认为应该是。我正在使用Sylius并在此处调用getForm
方法。我已使用最新的更改和新的错误消息更新了我的问题,这使我认为其他地方有问题。实际上,我得到了更正-似乎我应该传递表单名称通过…但改为createForm
。在本机Symfony中(使用表单组件):$Form=$this->createForm(\u表单类型的名称,\u实体\u对象);
和响应:返回$this->render('your\u template.html.twig',['Form=>Form->$Form->createView())
谢谢,但没有任何效果。我仍然看到相同的错误。是crmpicco.repository.course\u guide\u row
返回getName()方法?它不是,但我不认为应该是。我正在使用Sylius并在此处调用getForm
方法。我已使用最新的更改和新的错误消息更新了我的问题,这使我认为其他地方有问题。实际上,我得到了更正-似乎我应该传递表单名称通过…但改为createForm
。在本机Symfony中(使用表单组件):$Form=$this->createForm(\u表单类型的名称,\u实体\u对象);
和响应:返回$this->render('your\u template.html.twig',['Form=>$Form->createView());