资讯专栏INFORMATION COLUMN

October CMS - 快速入门 15 - 通过Form Widget添加新数据

wing324 / 3391人阅读

摘要:我们将采用方式完成,在提交保存视频之前,通过方式实现提前于保存视频之前,保存演员信息。我们再在数据库中确认一下下面,我们对输入的用户姓名进行分离。

我们试着直接在Select中输入新的演员

点击保存

如何实现随时在Select中输入新的演员。我们将采用Ajax方式完成,在提交保存视频之前,通过Ajax方式实现提前于保存视频之前,保存演员信息。这样就不会出现上述的错误。

File:pluginsraiseinfomoviesformwidgetsActorbox.php

    public function getSaveValue($actors)
    {
        dd($actors);
        return $actors;
    }

利用Chrome的开发工具-选择network,提交表单,我们可以看见getSaveValue函数获得传入的参数及其内部数据结构,可以看出是一个数组,而且传递的是输入的文本,而不是id

下面我们针对新输入的值进行处理
首先先建立一个数组,newArray,判断值是否是数字,如果是数字就保存到newArray中,如果不是数字,则需要新建一个Actor,这里我们模拟一个name和lastname,保存这个actor,然后把保存的这个actor的id放到newArray中:
File:pluginsraiseinfomoviesformwidgetsActorbox.php

public function getSaveValue($actors)
{

    // 声明一个数组
    $newArray = [];
    foreach($actors as $actorID){
        // 检查是否是数字
       if(!is_numeric($actorID)){
           // 如果不是数字,则新建一个actor
            $newActor = new Actor;
            $newActor->name = "John";
            $newActor->lastname = "Gusak";
            $newActor->save();
           // 并将新建的actor的id放入新的数组
            $newArray[] = $newActor->id;
       } else {
           $newArray[] = $actorID;
       }
    }

    dd($newArray);
    return $actors;
}

保存表单后,我们可以发现,传入的数组里面最后就是新插入的actor了。

我们再在数据库中确认一下

下面,我们对输入的用户姓名进行分离。
File:pluginsraiseinfomoviesformwidgetsActorbox.php

    public function getSaveValue($actors)
    {

        // 声明一个数组
        $newArray = [];
        foreach($actors as $actorID){

            // 检查是否是数字
           if(!is_numeric($actorID)){

               // 如果不是数字,则新建一个actor
                $newActor = new Actor;

                $nameAndLastname = explode(" ",$actorID);

                $newActor->name = $nameAndLastname[0];

                $newActor->lastname = $nameAndLastname[1];

                $newActor->save();

               // 并将新建的actor的id放入新的数组
                $newArray[] = $newActor->id;

           } else {

               $newArray[] = $actorID;

           }
        }

//        dd($newArray);
        return $newArray;
    }

刷新页面,添加新的演员,试着输入“洪涛 李”,提交表单,就可以保存了。

但是,这个功能有个明显的缺陷,就是如果你提交多次,这个新的演员,就会重复提交多个新的。只是他们的id不一样。这个问题其实很好解决,就是先判断是否有重名的演员就可以了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28878.html

相关文章

  • October CMS - 快速入门 14 保存Form Widget数据

    摘要:下面修改部件,实现数据保存首先需要准备数据变量,给小部件使用接下来就可以修改插件了现在显示了演员表中的所有演员的名,但是,没有显示所有演员的姓。 上节我们只是建立了小插件,但是数据是模拟的,我们希望将数据存储起来,那么我们就需要通过关联表将数据与视频表关联并保存,下面我们打开Builder,创建演员表 【database】 showImg(https://segmentfault.co...

    GT 评论0 收藏0
  • October CMS - 快速入门 5 创建插件

    摘要:创建插件对于来讲是很简单的事情,因为,提供了一个插件构建器具体步骤这里就不赘述了。安装完成后,会出现上图所示的菜单创建自己的插件的方法是点击如下图所示的小按钮。 创建插件对于October来讲是很简单的事情,因为,October提供了一个插件构建器:RainLab.Builder showImg(https://segmentfault.com/img/bVbcoxL?w=1266&h...

    macg0406 评论0 收藏0
  • October CMS - 快速入门 13 建立自定义Form Widgets

    摘要:所以,实际上我们没有办法保存这些信息。下一节我们将解决这个问题。 在上一节中我们是使用repeater字段存储演员信息的,当然这不是最佳的方式,我们希望,演员的信息能够存储在单独的表中,而且演员的信息可能需要更多的字段进行存储。然后将演员表和其他表进行关联,就好像视频表和风格表之间的关联一样。 showImg(https://segmentfault.com/img/bVbcpEb?w...

    myshell 评论0 收藏0
  • October CMS - 快速入门 12 Repeater字段

    摘要:字段是采取数据存储多条数据的字段。这样演员信息就被保存到了数据库的字段中,以格式存储。查看数据库即可印证上述的结论。这里通过这个例子只是说明这种字段的用法。 Repeater字段是采取Json数据存储多条数据的字段。 【Builder】——【Database】——【raiseinfo_movies_】为表添加一个新的列:actorsshowImg(https://segmentfaul...

    Richard_Gao 评论0 收藏0
  • October CMS - 快速入门 9 Images And Galleries

    摘要:关系,用于将图片附加到表上再次刷新页面,现在可以进行图片上传了。如何显示上传的图片简介查看视频页面会出现上面图片显示的信息,图片并没有显示出来。我们要是显示这些图片,则在进行代码修改图集当然我们可以使用插件进行显示和展示。 这一部分我们将为影片创建图片和图片库首先我们将分页改为每页10个影片 showImg(https://segmentfault.com/img/bVbco9R?w=...

    dadong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<