如何解决在没有实体的情况下将数据传递到Symfony表单集合
我正在尝试获取“替换”的集合以使其正常工作,但似乎无法将数据传递到表单中。在流程中没有与之相关的实体,只是我从外部流程传入的数据。提交后,我将必须验证并应用系统中的更改。
我的控制器的片段
/**
* @Route("/reassignment",name="digitalMarket_category_reassignment")
* @param ArrayCollection $deletedSubcategories Subcategories being deleted from other request
* @param Request $request
* @param NotificationGenerator $ng
* @return Response
*/
public function subcategoryReassignment( $deletedSubcategories,Request $request,NotificationGenerator $ng)
{
$form = $this->createForm(SubcategoryReplacementType::class,['replacements'=>[
['name'=>'offer','handle'=>'handle']
]]);
$form->handleRequest($request);
if( $form->isSubmitted() && $form->isValid() ){
dd($form->getData());
}
return $this->render('marketplace/category/replacement.html.twig',[
'form' => $form->createView()
]);
}
SubcategoryReplacementType.php
<?php
namespace App\Form\DigitalMarket;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class SubcategoryReplacementType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder,array $options)
{
$builder
->add('replacements',CollectionType::class,[
'entry_type' => SubcategoryDeleteType::class,'mapped' => false,]);
}
public function configureOptions(OptionsResolver $resolver)
{
// $resolver->setDefaults();
}
}
SubcategoryDeleteType.php
<?php
namespace App\Form\DigitalMarket;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class SubcategoryDeleteType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder,array $options)
{
$builder
->add('name',TextType::class,[
'label' => 'Name','required'=>true,])
->add('handle',[
'label' =>'Handle',])
->add('oldSub',[
'label' =>'Old Subcategory',])
->add('newSub',EntityType::class,[
'class'=>Subcategory::class,'label'=>'New Subcategory','group_by'=>'category','multiple'=>false,'attr'=>[
'class'=>'js-select2'
],'help'=>'Subcategories that will replace one being removed.',])
;
}
public function configureOptions(OptionsResolver $resolver)
{
}
}
解决方法
所以在这种情况下,我做错的是在表单上使用“映射”。
映射类型:布尔默认值:true
如果您希望在读取或写入该字段时忽略该字段 对象,可以将映射选项设置为false。
您可以只传递一个值数组:
$form = $this->createForm(SubcategoryReplacementType::class,['replacements'=>$replacements]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。