显示自动完成搜索Laravel的结果 [英] Displaying results from AutoComplete search Laravel

查看:83
本文介绍了显示自动完成搜索Laravel的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将Typeahead自动完成搜索应用于"master.blade",现在我的导航栏中有可用的搜索字段,该字段包含在网站内的所有位置.我的自动完成建议工作正常,但没有显示搜索结果.如何显示搜索结果?

I applied Typeahead autocomplete search to my "master.blade" and now I have search field available inside my navigation bar that is included everywhere inside my site. My autocomplete suggestions work fine but its not showing me the searched results. How can I display the search results?

我的路线:

Route::get('search',array('as'=>'search','uses'=>'AutoCompleteController@search'));
Route::get('autocomplete',array('as'=>'autocomplete','uses'=>'AutoCompleteController@autocomplete')); 

我的AutoCompleteController:

My AutoCompleteController:

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Product;
class AutoCompleteController extends MainController {

      public function search()
    {
        return view('master');
    }

       public function autocomplete(Request $request)
    {
        $data = Product::select("title")->where("title","LIKE","%{$request->input('query')}%")->get();
        return response()->json($data);
    }
}

我的master.blade:

My master.blade:

<head>
    <meta charset="UTF-8">
    <title>@if (!empty($title) )
        {{ $title }}  
        @else 
        MyHero 
        @endif</title> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">  
    <link href="{{ asset('css/style.css') }}" rel="stylesheet" type="text/css"/> 
    <link href="{{ asset('carousel.css') }}" rel="stylesheet"/>    
    <script>var BASE_URL = "{{ url('')}}/";</script>  


</head>

<header> 
    <!-- NAVBAR
================================================== -->
    <body>
        <div class="navbar-wrapper">
            <div class="container-fluid">

                <nav class="navbar navbar-inverse navbar-static-top">
                    <div class="container-fluid">
                        <div class="navbar-header">
                            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                                <span class="sr-only">Toggle navigation</span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                            </button>
                            <a class="navbar-brand" href="{{ url('/')}}">MyHero</a> 

                        </div> 
                        <div id="navbar" class="navbar-collapse collapse" >
                            <ul class="nav navbar-nav"> 

                                @if( !empty($menu)) 
                                @foreach($menu as $item) 
                                <li><a href="{{ url($item['url'])}}">{{ $item['link'] }}</a></li> 
                                @endforeach 
                                @endif

                                <li><a href="{{ url('shop')}}">Shop</a></li> 
                                <li> 
                                    <a href="{{ url('shop/checkout')}}">
                                        <img width="20" src="{{ asset('images/shopping-cart.png')}}">  
                                        <div id="total-cart"> 
                                            @if(! Cart::isEmpty()) 
                                            {{Cart::getTotalQuantity()}}
                                            @endif
                                        </div> 

                                    </a>
                                </li>
                            </ul>  

                            <ul class="nav navbar-nav navbar-right"> 
                                @if(Session::has('user_id')) 
                                <li><a href="{{ url('user/edit')}}">{{ Session::get('user_name') }}</a></li>   
                                @if( Session::has('is_admin'))
                                <li><a href="{{ url('cms/dashboard')}}">CMS DASHBOARD</a></li>  
                                @endif
                                <li><a href="{{ url('user/logout')}}">Logout</a></li> 
                                @else
                                <li><a href="{{ url('user/signin')}}">Sign In</a></li>
                                <li><a href="{{ url('user/signup')}}">Sign Up</a></li>  

                                @endif
                            </ul> 
                            <div class="row"> 
                            <div class="container">
                            <form class="navbar-form navbar-right">
                            <input class="typeahead form-control" style="width:300px;" type="text" placeholder="Search Products">
                            </form>

                        </div>
                    </div>
                </nav>

            </div>
        </div>




</header>  <br><br><br><br> 




<div class="container" >@yield('carousel')</div> <br><br>
<main>  
    <div class="container"> 

        @include ('inc.sm')
        @include ('inc.errors')


        @yield('content')  

    </div> 

</main>  
<br><br><br>
<footer>  
    <div class="container">  
        <hr>
        <div class="row"> 
            <div class="col-md-12" > 
                <p class="text-center" style="font-size: 18px;" >MyHero &copy; {{ date('Y') }} </p>
            </div>
        </div> 
    </div>
</footer>    



<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/4.0.1/bootstrap3-typeahead.min.js"></script>
<script src="{{ asset('js/script.js') }}" type="text/javascript"></script>  
<script type="text/javascript">
    var path = "{{ route('autocomplete') }}";
    $('input.typeahead').typeahead({
        source:  function (query, process) {
        return $.get(path, { query: query }, function (data) {
                return process(data);
            });
        }
    });
</script>  

推荐答案

要将模型转换为JSON,应使用toJson()方法.与toArray一样,toJson方法也是递归的,因此所有属性和关系都将转换为JSON:

To convert a model to JSON, you should use the toJson() method. Like toArray, the toJson method is recursive, so all attributes and relations will be converted to JSON:

public function autocomplete(Request $request)
    {

if( !empty(request('query'))){
        $data = Product::select("title")
        ->where("title","LIKE","%{$request->input('query')}%")
->get();
     $dataJson =$data->toJson();
        return view('master', compact('dataJson'));
}else

   return view ('master');

    }

如果您确实要在视图中使用json编码的数据,请在foreach中使用json_decode():

If you really want to use json encoded data in a view, use json_decode() in foreach:

@if($dataJson)
    @foreach(json_decode($dataJson, true) as $value)
       {{ $value['record1']['record 2'] }}   
    @endforeach
@endif

这篇关于显示自动完成搜索Laravel的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆