首页 > 解决方案 > 不能在 Laravel + Vue 项目中使用 dd() 和 var_dump 内部函数?

问题描述

我正在尝试纠正 Vue + Laravel 项目中的搜索输入错误。

出于某种原因,当搜索输入中使用多个单词时,不会显示产品,但会显示以产品为特色的项目。

例如:我有 4 种类型的办公桌:Desk Green、Desk、Desk Tall 和 Desk Grey。如果我搜索“Desk”,所有产品都会显示出来,并且还会显示这些桌子所在的室内设计项目。如果我专门搜索“Desk Green”,该函数会返回一个空的产品数组,但是以“Desk Green”为特色的室内设计项目会正常显示,即使正在使用相同的功能。

我正在使用两个主要功能,我将在下面粘贴。一个在 Vue 组件内部,一旦安装组件就会被调用。该函数使用 axios 将数据发布到控制器中的另一个函数。似乎我无法在控制器函数中使用 var_dump() 或 dd() ,我不知道为什么。我是一个尝试在一个相当复杂的项目中工作的初学者,所以对我来说有点困难。

这是组件内部的函数:

search(){
            let search = window.location.href.split('=');

            this.searchValue = search[1].replace('%20', ' ');

            search = search[1].replace('%20', '+').toLowerCase()            

            if(localStorage.getItem('userFormData')){
                let form = JSON.parse(localStorage.getItem('userFormData'));

                if(form.email){

                    this.emailClient = form.email;
                }
            }
            
            axios.post('search', {search : search, emailClient : this.emailClient})
            .then(response => {

                console.log(JSON.parse(JSON.stringify(response.data.products)))

                this.products      = JSON.parse(JSON.stringify(response.data.products))
                this.projects      = JSON.parse(JSON.stringify(response.data.projects))
                this.ebooks        = JSON.parse(JSON.stringify(response.data.ebooks))
                this.countProducts = response.data.countProducts
                this.countProjects = response.data.countProjects
                this.countEbooks   = response.data.countEbooks

            }).catch(error => {
                console.log(error)
            })
        }

这是控制器中的功能:

public function searchFunction(Request $request)
    {
        try {

            $lang   = App::getLocale();
            $lang   = new LangMiddleware;
            $locale = $lang->getLocale();

            $search = $request->search;
            $search = str_replace('+', ' ', $search);

            if(Translations::where('group','LIKE','product%')->where('key','LIKE','%descSeo')->where('value', 'like', '%'.$search.'%')->where('locale', $locale)->exists()){
                $prodsArrayTrans = Translations::where('group','LIKE','product%')->where('key','LIKE','%descSeo')->where('value', 'like', '%'.$search.'%')->where('locale', $locale)->groupBy('group')->get();

                foreach($prodsArrayTrans as $key => $trans){
                    $product = explode('_', $trans->group);

                        $products = Products::with('categories')->where('id', $product[1])->where('visible', 1)->get();                    

                            $dataProducts[$key] = $products->map(function ($products) use ($locale) {
                                if($products->id_category != 5)
                                {
                                    $category = 'heritage';
                                }
                                else
                                {
                                    $category = 'graphic-lamps';
                                }

                                return [
                                    'id'          => $products->id,
                                    'name'        => $products->name,
                                    'nameSeo'     => trans($products->title_seo),
                                    'video'       => $products->video_url,
                                    'category'    => $products->categories->category,
                                    'description' => $products->description,
                                    'weight'      => $products->weight,
                                    'model'       => $products->model,
                                    'dimensions'  => $products->dimensions,
                                    'priceWW'     => $products->price_ww,
                                    'priceUSA'    => $products->price_usa,
                                    'titleSeo'    => $products->title_seo,
                                    'descSeo'     => trans($products->desc_seo),
                                    'keywordsSeo' => trans($products->keywords_seo),
                                    'bulbs'       => $products->bulbs,
                                    'certificate' => (bool)$products->ul_certificate,
                                    'new'         => (bool)$products->new,
                                    'contract'    => (bool)$products->contract,
                                    'onlineFlag'  => (bool)$products->online_flag,
                                    'onlineLink'  => $products->online_link,
                                    'image'       => $products->thumbnail,
                                    'imageAlt'    => $products->thumbnail_alt,
                                    'link'        => strtolower($category . '/' . $products->categories->category . '/' . str_replace(' ', '-', $products->name))
                                ];
                            });  

                }
            }else{
                $array = explode(' ', $search);

                $translationsArray = [];

                foreach ($array as $key => $value) {
                    if($value != ''){
                        if(Translations::where('value', 'like', '%'.$value.'%')->exists())
                        $translationsArray = Translations::where('value', 'like', '%'.$value.'%')->groupBy('group')->get();
                    }
                }
           
                if(count($translationsArray) > 0)
                {
                    foreach ($translationsArray as $key => $trans) {
                        if(strpos($trans->group, 'product') !== false)
                        {

                            $product = explode('_', $trans->group);

                            $products = Products::with('categories')->where('id', $product[1])->where('visible', 1)->get();


                                $dataProducts[$key] = $products->map(function ($products) use ($locale) {
                                    if($products->id_category != 5)
                                    {
                                        $category = 'heritage';
                                    }
                                    else
                                    {
                                        $category = 'graphic-lamps';
                                    }

                                    return [
                                        'id'          => $products->id,
                                        'name'        => $products->name,
                                        'nameSeo'     => trans($products->title_seo),
                                        'video'       => $products->video_url,
                                        'category'    => $products->categories->category,
                                        'description' => $products->description,
                                        'weight'      => $products->weight,
                                        'model'       => $products->model,
                                        'dimensions'  => $products->dimensions,
                                        'priceWW'     => $products->price_ww,
                                        'priceUSA'    => $products->price_usa,
                                        'titleSeo'    => $products->title_seo,
                                        'descSeo'     => trans($products->desc_seo),
                                        'keywordsSeo' => trans($products->keywords_seo),
                                        'bulbs'       => $products->bulbs,
                                        'certificate' => (bool)$products->ul_certificate,
                                        'new'         => (bool)$products->new,
                                        'contract'    => (bool)$products->contract,
                                        'onlineFlag'  => (bool)$products->online_flag,
                                        'onlineLink'  => $products->online_link,
                                        'image'       => $products->thumbnail,
                                        'imageAlt'    => $products->thumbnail_alt,
                                        'link'        => strtolower($category . '/' . $products->categories->category . '/' . str_replace(' ', '-', $products->name))
                                    ];
                                });  



                        }else{
                            $dataProducts = [];
                        }
                    }
                }else{

                    $dataProducts = [];
                }
            }

            if(Translations::where('group','LIKE','project%')->where('key','LIKE','%details')->where('value', 'like', '%'.$search.'%')->where('locale', $locale)->exists()){
                $projectsArrayTrans = Translations::where('group','LIKE','project%')->where('key','LIKE','%details')->where('value', 'like', '%'.$search.'%')->where('locale', $locale)->groupBy('group')->get();
                foreach($projectsArrayTrans as $key => $trans){
                    $project = explode('_', $trans->group);

                        $projects = Projects::where('id', $project[1])->get();

                        $dataProjects[$key] = $projects->map(function ($projects) {
                            return [
                                'id'       => $projects->id,
                                'name'     => $projects->name,
                                'image'    => $projects->cover,
                                'imageAlt' => trans($projects->cover_alt),
                                'preview'  => trans($projects->details_preview),
                                'title'    => trans($projects->name),
                                'subTitle' => trans($projects->subTitle)
                            ];
                        });
                }
            }else{
                $array = explode(' ', $search);

                $translationsArray = [];

                foreach ($array as $key => $value) {
                    if($value != ''){
                        if(Translations::where('value', 'like', '%'.$value.'%')->exists())
                        $translationsArray = Translations::where('value', 'like', '%'.$value.'%')->groupBy('group')->get();
                    }
                }         

                if(count($translationsArray) > 0)
                {
                    foreach ($translationsArray as $key => $trans) {
                        if(strpos($trans->group, 'project') !== false)
                        {
                            $project = explode('_', $trans->group);

                            $projects = Projects::where('id', $project[1])->get();

                            $dataProjects[$key] = $projects->map(function ($projects) {
                                return [
                                    'id'       => $projects->id,
                                    'name'     => $projects->name,
                                    'image'    => $projects->cover,
                                    'imageAlt' => trans($projects->cover_alt),
                                    'preview'  => trans($projects->details_preview),
                                    'title'    => trans($projects->name),
                                    'subTitle' => trans($projects->subTitle)
                                ];
                            });



                        }else{
                            $dataProjects = [];
                        }
                    }
                }else{

                    $dataProjects = [];
                }
            }


            if(Translations::where('group','LIKE','ebook%')->where('key','LIKE','%details')->where('value', 'like', '%'.$search.'%')->where('locale', $locale)->exists()){
                $ebooksArrayTrans = Translations::where('group','LIKE','ebook%')->where('key','LIKE','%details')->where('value', 'like', '%'.$search.'%')->where('locale', $locale)->groupBy('group')->get();
                foreach($ebooksArrayTrans as $key => $trans){
                    $ebook = explode('_', $trans->group);


                        $ebooks = Ebooks::where('id', $ebook[1])->get();


                        $dataEbooks[$key] = $ebooks->map(function($ebooks)use ($locale){
                            return [
                                'id'       => $ebooks->id,
                                'name'     => trans($ebooks->name),
                                'details'  => trans($ebooks->details),
                                'image'    => trans($ebooks->img),
                                'imageAlt' => trans($ebooks->alt)
                            ];
                        });
                }
            }else{
                $array = explode(' ', $search);

                $translationsArray = [];

                foreach ($array as $key => $value) {
                    if($value != ''){
                        if(Translations::where('value', 'like', '%'.$value.'%')->exists())
                        $translationsArray = Translations::where('value', 'like', '%'.$value.'%')->groupBy('group')->get();
                    }
                }
           
                if(count($translationsArray) > 0)
                {
                    foreach ($translationsArray as $key => $trans) {


                        if(strpos($trans->group, 'ebook') !== false)
                        {

                            $ebook = explode('_', $trans->group);



                            $ebooks = Ebooks::where('id', $ebook[1])->get();


                            $dataEbooks[$key] = $ebooks->map(function($ebooks)use ($locale){
                                return [
                                    'id'       => $ebooks->id,
                                    'name'     => trans($ebooks->name),
                                    'details'  => trans($ebooks->details),
                                    'image'    => trans($ebooks->img),
                                    'imageAlt' => trans($ebooks->alt)
                                ];
                            });




                        }else{
                            $dataEbooks = [];
                        }
                    }
                }else{
                    $dataEbooks = [];
                }
                
            }       

      
            $countProducts = count($dataProducts);
            $countProjects = count($dataProjects);
            $countEbooks   = count($dataEbooks);


            if($countProducts > 0){
                $flagProducts = 1;
            }else{
                $flagProducts = 0;
            }

            if($countProjects > 0){
                $flagProjects = 1;
            }else{
                $flagProjects = 0;
            }

            if($countEbooks > 0){
                $flagEbooks = 1;
            }else{
                $flagEbooks = 0;
            }


            $keywords                   = new SearchKeyword;
            $keywords->email            = $request->emailClient;
            $keywords->locale           = $locale;
            $keywords->keyword          = $search;
            $keywords->products_results = $flagProducts;
            $keywords->projects_results = $flagProjects;
            $keywords->ebooks_results   = $flagEbooks;
            $keywords->save();


            return response()->json([
                                        'products'      => $dataProducts,
                                        'projects'      => $dataProjects,
                                        'ebooks'        => $dataEbooks,
                                        'countProducts' => $countProducts,
                                        'countProjects' => $countProjects,
                                        'countEbooks'   => $countEbooks,
                                    ]);
            
        } catch (Exception $e) {
            return response()->json($e->getMessage(), 500);
        }
    }

我真的很感激任何建议。先感谢您。

标签: laravelvue.jsvar-dump

解决方案


推荐阅读