我得到了例外
`预期参数类型"字符串"," 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';
}
}
`
非常感谢您的帮助
答案 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'];