【问题标题】:Pagination in Laravel with JSON Object在 Laravel 中使用 JSON 对象进行分页
【发布时间】:2018-10-17 07:57:51
【问题描述】:

您好,我有一个 xml 格式的数据,我尝试将其转换为 JSON。我想在 laravel 中进行分页。在这里,我在控制器中给出我的代码。我的代码出错了

错误:

PageController.php 第 189 行中的 FatalErrorException:调用成员 函数 paginate() 在字符串上

这是我的控制器:

public function soap(Request $request){ 
            $this->validate($request, [
            'nama' => 'required',
            'negara' => 'required',
            'pencarian'=>'required'
            ]);

            $count = Pengaturan::where('key', 'visitor')        
            ->first();
            $array=array_map('intval', str_split($count->value));

            $kategori = $request->input("pencarian");
            $nama = $request->input("nama");
            $negara = $request->input("negara");
            $pages = $request->get("pageby");

            $soapClient = new SoapClient("http://interop.bnp2tki.go.id/perwakilanWS/wsdl"); 
            $param;     
            if($kategori=="2"){ //search by paspor
                $param = array( 
                'user_id'=>'kjri_jed', 
                'user_pass'=>'123',
                'paspor'=>$nama         
                );

                $error = 0; 
                try { 
                    $info = $soapClient->__call("ws_view_tkibypaspor", $param);         
                    if($info!="notfound"){                  
                        $informasi = preg_replace('/&(?!#?[a-z0-9]+;)/', '&', $info);
                        $xml = new SimpleXMLElement($informasi);
                        $data = $xml->tki_data;
                        $pagess = $xml->total_page;
                        $hasil = array($data);
                        $json = json_encode($hasil);
                        $paging = $json->paginate(10);

                        return view('page.search-tki', compact('data', 'array','paging'));
                        }else{
                        $data=$info;
                        return view('page.search-tki', compact('data', 'array'));                   
                    }
                    } catch (SoapFault $fault) { 
                    return view('page.search-tki', compact('data', 'array'));
                } 

                }else{ //by nama
                $param = array( 
                'user_id'=>'kjri_jed', 
                'user_pass'=>'123',
                'nama'=>$nama,
                'negara'=>$negara,
                'page'=>$pages          
                );
                $error = 0; 

                try { 
                    $info = $soapClient->__call("ws_view_tkibyname", $param); 
                    if($info!="notfound"){
                        $informasi = preg_replace('/&(?!#?[a-z0-9]+;)/', '&', $info);
                        $xml = new SimpleXMLElement($informasi);
                        $data = $xml->tki_data;
                        $pagess = $xml->total_page;

                        //merubah ke pagination
                        //$hasil = array($data);
                        $json = json_encode($data);
                        $paging = $json->paginate(10);

                        return view('page.search-tki', compact('data', 'array','pagess','nama','negara','kategori','json','paging'));
                        }else{
                        $data=$info;
                        return view('page.search-tki', compact('data', 'array'));                   
                    }
                    } catch (SoapFault $fault) { 
                    return view('page.search-tki', compact('data', 'array'));
                } 

            }       
        }

有人可以帮我吗? 请:)

【问题讨论】:

    标签: laravel datatables client-side


    【解决方案1】:

    paginate() 方法适用于 QueryBuilder::class 实例。

    你可以做的是使用 laravel Collection

    $informasi = preg_replace('/&(?!#?[a-z0-9]+;)/', '&', $info);
    $xml = new SimpleXMLElement($informasi);
    $data = $xml->tki_data;
    $pagess = $xml->total_page;
    $hasil = array($data);
    $page = collect($hasil)->take(10);
    $paging = $page->toJson();
    

    或者你可以使用forPage($pageNumber, $pageCount)方法

    $informasi = preg_replace('/&(?!#?[a-z0-9]+;)/', '&', $info);
    $xml = new SimpleXMLElement($informasi);
    $data = $xml->tki_data;
    $pagess = $xml->total_page;
    $hasil = array($data);
    $page = collect($hasil)->forPage(1,10);
    $paging = $page->toJson();
    

    【讨论】:

    • 谢谢你回复我的问题,我会试试你的回复:)
    • 我已经编写了控制器中的代码并对其进行了压缩。我已经尝试过在视图中使用方法 render() 。我收到这样的错误:“FatalErrorException in 81b2083a324452e74994deeb75563ac98b3752fb.php 第 59 行:调用字符串上的成员函数 render()”。那么如何将其用于视图呢?
    • render() 的方法应该做什么? $paging 是一个 json 格式的字符串。
    • 它应该在视图中显示分页
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 2011-01-23
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 2015-04-11
    相关资源
    最近更新 更多