Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2将选项传递到抽象FormType_Php_Symfony - Fatal编程技术网

Php Symfony2将选项传递到抽象FormType

Php Symfony2将选项传递到抽象FormType,php,symfony,Php,Symfony,我已经在这上面呆了很长时间了。我在这里读了很多答案,但我无法运行它 我的控制器包含 $series = $this->getDoctrine()->getRepository('DemoDemoBundle:Series')->createQueryBuilder('series') ->where('series.type = 1') ->getQuery()->getResult(); $magazine = new Magazine();

我已经在这上面呆了很长时间了。我在这里读了很多答案,但我无法运行它

我的控制器包含

$series = $this->getDoctrine()->getRepository('DemoDemoBundle:Series')->createQueryBuilder('series')
    ->where('series.type = 1')
    ->getQuery()->getResult();
$magazine = new Magazine();
$content = array(
    'series' => $series
);

$form = $this->createForm(new MagazineType($this->get('translator'), $content), $magazine);
$form->handleRequest($request);
我想将变量
$content
传递给表单,以便在某些选择框中使用
'series'
MagazineType
扩展
PublicationType
。底层实体也是如此。以下是
MagazineType
的外观:

class MagazineType extends PublicationType
{
    function __construct($translator, array $series = null)
    {


 parent::__construct($translator, $series); //$series);
}

/**
 * @param FormBuilderInterface $builder
 * @param array                $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    // TODO: Refactor constant out
    parent::buildForm($builder, $options)
//            ->add('dateSubmitted')
//            ->add('userSubmitted')
//            ->add('file')
        ->add('issueNumber')
        ->add('save', 'submit');
}

/**
 * @param OptionsResolverInterface $resolver
 */
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(
        array(
            'data_class' => 'Demo\DemoBundle\Entity\Magazine',
            'series' => $this->translator->trans('addPublication.noSeries')
        )
    );
}
PublicationType

class PublicationType extends AbstractType
{
    protected $series, $translator;
    public function __construct($translator, $series)
    {
        $this->translator = $translator;
        $this->series = $series;
    }
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options){
        $builder
            ->add('name', 'text', array(
                    'label' => $this->translator->trans('addPublication.name')
                ))
    //            ->add('dateSubmitted')
    //            ->add('userSubmitted')
    //            ->add('file')
            ->add('series', 'choice', $this->series);//$formOptions['series']);
        ;
        return $builder;
    }

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
                'data_class' => 'Demo\DemoBundle\Entity\Publication',
                'series' => $this->translator->trans('addPublication.noSeries')
        ));
    }
也许我访问series变量的方式不对,但我甚至没有进一步构造MagazineType(option
series
not allowed),即使我在DefaultOptions中设置了它,如上所述。我可能在这里遗漏了一些类似的问题,因为我整天都在忙这个


谢谢你的帮助

起初。。。我在FormType类中没有看到方法getName,您设置了吗them@zavalit是的,我只是没有发布它,但它是一个简单的获取工具。我真的不知道为什么需要扩展两次FormType,但我看到的是->添加('series','choice',$this->series),它应该是->添加('series','choice',array('data'=>this->series)@zavalit噢,谢谢!这让我更进一步了。虽然->添加('series','choice',array('data'=>$This->series)给了我一个错误。-->添加('series','choice',array('choices'=>$This->series)的行为非常奇怪(在选择中打印我的css版权注释),但我认为我需要这样做?我需要做什么才能让OptionsResolver实际设置一个空的系列索引?