symfony中渲染动态forms示例

比如我我们有一张新闻分类表,里面包含了分类编号,分类名称等基本字段

新闻信息表包含了新闻的所有信息:编号,新闻分类,标题,作者,内容等等。。


然后录入新闻的时候希望通过选择下拉列表的方式显示所有的分类(或者特定分类),

可以这么做:

1. 先通过crud生成最基本的页面控件

2. 然后把新闻分类的类型改成“entity”(见官网介绍:symfony.com/doc/current/reference/forms/types/entity.html),数据指定为对应的新闻分类entity,举例:


public function buildForm(FormBuilderInterface $builder, array $options)
    {
         $builder
            ->add('title','text',array('label'=>'标题'))
            ->add('author','text',array('label'=>'作者'))
            ->add('categoryId','entity',array(
                    'label'=>'新闻分类',
                    'class'=>'AcmeDemoBundle:NewsCategory',
                    'property'=>'name',
                    'data'=>$this->em->getReference("AcmeDemoBundle:NewsCategory",$options['data']->getCategoryId()),
                    'empty_value' => '请选择新闻分类',
                )
            )
            ->add('content','textarea',array('label'=>'文章内容'))
            ;
    }

3. 页面引用:

{{ form_start(form) }}
        {{ form_errors(form.title) }}
        {{ form_errors(form.author) }}
        {{ form_errors(form.categoryId) }}
        {{ form_errors(form.content) }}
{{ form_end(form) }}


需要注意的地方:

1. Controller中实例化Forms的时候需要传个EntityManager 给此FomType:

$this->getDoctrine()->getManager();



2.data属性可以不指定,这句是为了在编辑新闻的时候绑定原始分类的,这点,很多教程都没讲
'data'=>$this->em->getReference("AcmeDemoBundle:NewsCategory",
                                $options['data']->getCategoryId()),




转载于:https://my.oschina.net/bigtree/blog/192051

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值