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

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

点击保存

clipboard.png

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

File:pluginsraiseinfomoviesformwidgetsActorbox.php

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

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

clipboard.png

下面我们针对新输入的值进行处理
首先先建立一个数组,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了。
clipboard.png
我们再在数据库中确认一下

clipboard.png

下面,我们对输入的用户姓名进行分离。
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;
    }

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

clipboard.png

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值