使用应用程序\模型\MealPlan;使用ob娱乐下载\组件\形式\AbstractType;使用ob娱乐下载\组件\形式\扩展\核心\类型\ChoiceType;使用ob娱乐下载\组件\形式\FormBuilderInterface;使用ob娱乐下载\组件\形式\FormEvent;使用ob娱乐下载\组件\形式\FormEvents;使用ob娱乐下载\组件\形式\FormInterface;使用ob娱乐下载\组件\OptionsResolver\OptionsResolver;类MealPlannerForm扩展AbstractType{公共常量MEAL_BREAKFAST =“早餐”;公共常量MEAL_SECOND_BREAKFAST =“第二个早餐”;公共常量MEAL_ELEVENSES =“上午茶”;公共常量MEAL_LUNCH =“午餐”;公共常量MEAL_DINNER =“晚餐”;公共函数buildForm(FormBuilderInterface builder美元,数组$选项){$选择= (“早餐”= >自我::MEAL_BREAKFAST,“第二个早餐”= >自我::MEAL_SECOND_BREAKFAST,“上午茶”= >自我::MEAL_ELEVENSES,“午餐”= >自我::MEAL_LUNCH,“晚餐”= >自我::MEAL_DINNER);构建器- >添加(美元“吃饭”ChoiceType::类,“选择”= >选择美元,“占位符”= >“这顿饭是吗?”]);美元构建器- > addEventListener (FormEvents:: PRE_SET_DATA,函数(FormEvent事件美元){data =事件- >美元getData ();餐=美元数据? - > getMeal ();这个美元- > addFoodField($事件- > getForm()美元餐);});构建器- > get(美元“吃饭”)- > addEventListener (FormEvents:: POST_SUBMIT函数(FormEvent事件美元){餐=事件- > getForm美元()- > getData ();这个美元- > addFoodField($事件- > getForm () - > getParent()美元餐);});}公共函数configureOptions(OptionsResolver解析器美元){$解析器- > setDefaults ([“data_class”= > MealPlan::类);}私人函数getAvailableFoodChoices(字符串餐美元):数组{$食物=匹配(餐美元){自我::MEAL_BREAKFAST = > [“鸡蛋”,“培根”,“草莓”,“羊角面包”),自我::MEAL_SECOND_BREAKFAST = > [“百吉饼”,“猕猴桃”,“鳄梨”,“个wafl”),自我::MEAL_ELEVENSES = > [“煎饼”,“沙拉”,“茶☕️”),自我::MEAL_LUNCH = > [“三明治”,“奶酪”,“寿司”),自我::MEAL_DINNER = > [“披萨”,“一品脱”,“意大利面”});$食物=合二为一(食物,食物美元);返回美元的食物;}公共函数addFoodField(FormInterface形式,美元?字符串$餐){$ foodChoices =零= = = $餐吗?[]:这个美元- > getAvailableFoodChoices($餐);$形式- > add (“mainFood”ChoiceType::类,“占位符”= >零= = = $餐吗?“选择一顿饭第一”:sprintf (‘什么’s % s ?”美元,餐),“选择”= > foodChoices美元,“禁用”= >零= = = $,“invalid_message”= >假]);}}