symfony2 表单和entity疑问


例如:我想添加一篇博客,里面有一个分类,我应该有一个category_id字段,然后在添加博客的时候可以通过下拉列表选择。
请输入图片描述

疑问:
我的下拉列表中怎么才能有我添加好的分类列表呢!
posts和category的关系


 #Demo\TestBundle\Entity\Posts
Demo\TestBundle\Entity\Posts:
type: entity
table: posts
repositoryClass: Demo\TestBundle\Repository\PostsRepository
id:
    id:
        type: integer
        id: true
        genertor: { strategy: AUTO }
fields:
    title: 
        type: string
        length: 64
    author:
        type: string
        length: 32
    create_at:
        type: integer
    update_at:
        type: integer
manyToOne:
    category:
        targetEntity: Category
        inversedBy: posts


Demo\TestBundle\Entity\Category:
type: entity
table: category
repositoryClass: Demo\TestBundle\Repository\CategoryRepository
id:
    id:
        type: integer
        id: true
        genertor: 
            strategy: AUTO
fields:
    title: 
        type: string
        length: 16
    create_at:
        type: integer
    update_at:
        type: integer
oneToMany:
    posts:
        targetEntity: Posts
        mappedBy: category

form表单时通过命令生成的:php app/console doctrine:generate:form DemoTestBundle:Posts


 <?php

namespace Demo\TestBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class PostsType extends AbstractType
{
    /**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('id')
        ->add('title')
        ->add('author')
        ->add('create_at')
        ->add('update_at')
        ->add('category')
    ;
}

/**
 * @param OptionsResolverInterface $resolver
 */
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Demo\TestBundle\Entity\Posts'
    ));
}

/**
 * 表单标示符, name属性
 * @return string
 */
public function getName()
{
    return 'posts';
}

}

直接使用会报错, 我个人觉得是在category那段错了,估计要给category下拉列表获取一些分类的值,然后在展示,但是不知道该怎么实现。

大概就是这样子,不知道哪里要调还是代码错误了,希望跟路大侠指教。

php symfony

常规护航舰 10 years, 6 months ago

把这个
->add('category')
改成
->add('category', 'choice')
试一下看看

永远的小绿人 answered 10 years, 6 months ago

Your Answer