脚本宝典收集整理的这篇文章主要介绍了php – 如何将模型转换器应用于Symfony2表单中的集合项?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
@L_512_0@一个类型集合的Symfony2表单字段,其中集合项是实体类型.我使用Symfony 2.7.
问题是
到目前为止它可以工作,但在这种情况下,我必须将模型数据转换器应用于那些集合项,如in the Symfony Cookbook所述.我使用此代码片段:
<?PHP $builder ->add( $builder ->create('ITems','collection',array( 'tyPE' => 'entity','options' => array( 'class' => 'AppBundle:Item','PRoperty' => 'name','label' => 'Item',),'label' => 'Items','allow_add' => true,'allow_delete' => true,'delete_empty' => true,'prototype' => true,'required' => false,)) // $options['em'] is the entity manager ->addModelTransformer(new ItemToNumberTransformer($options['em'])) ) ;
不幸的是,这会将模型转换器应用于整个集合,而不是它的一个Item项.作为一种解决方法,我修改了变换器以使用项目/ ID的数组而不是仅使用单个项目/ id,但是这种类似于处理它的错误位置.在我看来好像这更像是一个语法问题.
问题是
namespace AppBundle\Form\Type; use Symfony\component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Doctrine\ORM\EntityManager; /* Other use statements */ class ItemEntityType extends AbstractType { /** * @VAR \Doctrine\ORM\EntityManager */ protected $em; public function __construct(EntityManager $em) { $this->em = $em } public function builDForm(FormBuilderInterface $builder,array $options) { $builder->addModelTransformer(new ItemToNumberTransformer($this->em)); } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setdefaults(array( 'class' => 'AppBundle:Item','label' => 'Item',)); } public function getParent() { return 'entity'; } public function getName() { return 'appbundle_item_entity'; } }
然后将其定义为服务
应用程序/配置/ services.yML
services: form.type.model.item_entity: class: AppBundle\Form\Type\ItemEntityType arguments: ["@doctrine.orm.entity_manager"] tags: - {name: form.type,alias: appbundle_item_entity}
现在,您可以将其指定为集合的类型
$builder ->create('items',array( 'type' => 'appbundle_item_entity' 'label' => 'Items',))
披露:我没有测试过这个,但它应该有效.
以上是脚本宝典为你收集整理的php – 如何将模型转换器应用于Symfony2表单中的集合项?全部内容,希望文章能够帮你解决php – 如何将模型转换器应用于Symfony2表单中的集合项?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。