回所有演示
演示

相关表单字段

使用应用程序\形式\MealPlannerForm;使用ob娱乐下载\\FrameworkBundle\控制器\AbstractController;使用ob娱乐下载\组件\形式\FormInterface;使用ob娱乐下载\用户体验\LiveComponent\属性\AsLiveComponent;使用ob娱乐下载\用户体验\LiveComponent\ComponentWithFormTrait;使用ob娱乐下载\用户体验\LiveComponent\DefaultActionTrait;# (AsLiveComponent (meal_planner)]MealPlannerComponent扩展AbstractController{使用ComponentWithFormTrait;使用DefaultActionTrait;受保护的函数instantiateForm():FormInterface{返回这个美元- > createForm (MealPlannerForm::类);}}
{#看到src /形式/ MealPlannerForm。php表单的魔法#}<div{{属性}}>{{form_start(形式)}}{{form_row (form.meal)}}{{form_row (form.mainFood)}}{{form_end(形式)}}< /div>
使用应用程序\模型\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事件美元){/ /对象绑定到表单/ * *@var美元? MealPlan数据* /data =事件- >美元getData ();餐=美元数据? - > getMeal ();这个美元- > addFoodField($事件- > getForm()美元餐);});构建器- > get(美元“吃饭”)- > addEventListener (FormEvents:: POST_SUBMIT函数(FormEvent事件美元){/ /这里重要的获取$事件- > getForm () - > getData ()/ / $事件- > getData()会让你客户数据(即ID)餐=事件- > 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”= >]);}}