createForm抛出错误类型"字符串"的预期参数; (从2.7迁移到3.0)

时间:2015-12-25 20:50:48

标签: twig symfony

我得到了例外

`预期参数类型"字符串"," AppBundle \ Form \ BasicForm"给定

500内部服务器错误 - UnexpectedTypeException`

访问网址时

。请参阅以下代码,该代码与symfony 2.7一起使用,并在迁移到3.0后面临此问题。

控制器代码是,

`

    /**
     * @Route("/basicForm", name="displayBasicForm")
     * @param $request - The request parameter
     * @return the Response
     */
 public function displayForm(Request $request) {
        $model = new FormModel();
        $dropDownDatas = array();
        $dropDownDatas["cityLists"] = $this->get("city_dao")->fetchAllCities('USA');
        $dropDownDatas["areaLists"] = $this->get("area_dao")->fetchAllAreas(1);

        $formObj = new BasicForm($dropDownDatas);
        $areaForm = $this->createForm($formObj, $model);
}

The formtype is,

class BasicForm extends AbstractType {

    protected $dropDownDatas;

    public function __construct($dropDownDatas)
    {
        $this->dropDownDatas = $dropDownDatas;
    }

    public function buildForm(FormBuilderInterface $builder, array $options)       {
        $cityLists = $this->dropDownDatas['cityLists'];
        $areaLists = $this->dropDownDatas['areaLists'];

        $builder->add('cityId', 'choice', array(
            'choices' => $cityLists,
            'empty_data'  => null))
            ->add('areaId', 'choice', array(
                'choices' => $areaLists,
                'empty_data'  => null));
    }

    public function getName() {
        return 'basicForm';
    }
}

`

非常感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您需要在createForm方法中设置表单类型的完全限定类名称,请参阅this

所以你应该这样想:

$form = $this->createForm(BasicForm::class, $model);

答案 1 :(得分:0)

谢谢" elkorchi anas"快速回复,这有助于我解决它。

在控制器中,传递$ options数组中的其他值 array('dropDownDatas' => $dropDownDatas)

在FormType覆盖功能中 public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array('dropDownDatas' => null)); } 在构建表单中读取它, $options['dropDownDatas']['cityLists'];