当前位置: 首页 > 后端技术 > PHP

OctoberCMS-QuickStart15-通过FormWidget添加新数据

时间:2023-03-29 19:05:35 PHP

下面我们尝试直接在Select中输入新的actor然后点击Save来实现如何在Select中随时输入新的actor。我们将使用Ajax方法来完成该过程。在提交保存的视频之前,使用Ajax的方式在保存视频之前预先保存好演员信息。这样就不会出现上述错误。文件:pluginsraiseinfomoviesformwidgetsActorbox.phppublicfunctiongetSaveValue($actors){dd($actors);返回$演员;}使用Chrome的开发工具——选择network并提交表单,我们可以看到getSaveValue函数获取的是传入的参数及其内部数据结构,可以看出是一个数组,传递的是输入的文本,而不是ID。下面我们处理新输入的值。首先创建一个数组newArray,判断这个值是否为数字,如果是数字就保存到newArray中,如果不是数字就需要创建一个新的Actor。这里我们模拟一个name和lastname,保存这个actor,然后将保存的actor的id放到newArray中:File:pluginsraiseinfomoviesformwidgetsActorbox.phppublicfunctiongetSaveValue($actors){//声明一个数组foreach($actorsas$actorID){//检查它是否是数字if(!is_numeric($actorID)){//如果不是数字,创建一个新演员$newActor=newActor;$newActor->name='John';$newActor->lastname='Gusak';$newActor->保存();//并将新创建的actor的id放入一个新数组$newArray[]=$newActor->id;}else{$newArray[]=$actorID;}}dd($newArray);return$actors;}保存表单后,我们可以在传入的数组中找到表面的末端是新插入的演员。让我们在数据库中确认一下。接下来,我们将输入的用户名分开。File:pluginsraiseinfomoviesformwidgetsActorbox.phppublicfunctiongetSaveValue($actors){//声明一个数组$newArray=[];foreach($actorsas$actorID){//检查是否为数字if(!is_numeric($actorID)){//如果不是数字,则创建一个新演员$newActor=newActor;$nameAndLastname=explode('',$actorID);$newActor->name=$nameAndLastname[0];$newActor->lastname=$nameAndLastname[1];$newActor->保存();//并将新创建的actor的id放入一个新数组$newArray[]=$newActor->id;}else{$newArray[]=$actorID;}}//dd($newArray);返回$newArray;}刷新页面,添加新演员,尝试输入“红桃李”,提交表单,即可保存。但是这个功能有一个明显的缺陷,就是多次提交,这个新的actor会重复提交多个新的。只是他们的id不一样。这个问题其实很好解决,就是先判断是否有同名演员。