October CMS - 快速入門 15 - 經過Form Widget添加新數據

咱們試着直接在Select中輸入新的演員
clipboard.pngphp

點擊保存數據庫

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.phpspa

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;
    }

刷新頁面,添加新的演員,試着輸入「洪濤 李」,提交表單,就能夠保存了。3d

clipboard.png

可是,這個功能有個明顯的缺陷,就是若是你提交屢次,這個新的演員,就會重複提交多個新的。只是他們的id不同。這個問題其實很好解決,就是先判斷是否有重名的演員就能夠了。code

相關文章
相關標籤/搜索