私のカテゴリのページ内と私の製品ページ内に同じ名前とIDの検索フィールドがあります。オートコンプリートの提案はうまくいくようですが、検索フィールド内で検索候補をクリックすると私の検索文字列を私の製品IDである整数に変換します.Afterwardsは "mysite/products id"に "このメニューの内容なし"とリダイレクトします。問題は私のルートと私のwindow.Location私のJSの中にあると思うが、私はそれを把握することはできません。ルートとwindow.location - Laravel
Route::get('shop', '[email protected]');// my categories page
Route::get('shop/{category_url}', '[email protected]'); // my products page
マイAutoCompleteController:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Product;
class AutoCompleteController extends MainController {
public function show(Product $product) {
return view('content.products', ['product' => $product]);
}
public function autoComplete(Request $request) {
$query = $request->get('term','');
$products=Product::where('title','LIKE','%'.$query.'%')->get();
$data=array();
foreach ($products as $product) {
$data[]=array('label'=>$product->title,'value'=>$product->id);
}
if(count($data)){
return $data;}
else{
return ['value'=>'No Result Found','id'=>''];
}}
}
で私の見解ここ
は私のコードは
マイルートカテゴリおよび製品に接続
Route::get('products/{id}', '[email protected]');
Route::get('autocomplete',array('as'=>'autocomplete','uses'=>'[email protected]'));
Route::get('searchajax',array('as'=>'searchajax','uses'=>'[email protected]'));
さらにいくつかのルートであります私のオートコンプリートの検索のためのproducts.bladeとcategories.bladeは同じである:あなたのautoComplete
方法で
@extends ('master')
@section('content')
<link href="http://demo.expertphp.in/css/jquery.ui.autocomplete.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<div class="row">
<form class="navbar-form text-center " form method="GET" action=" ">
<input id="search_text" placeholder=" Search products" name="search_text" type="text" value="" style="width: 400px; height: 35px; border-radius: 5px ; padding-left: 12px;"><br><br>
<input class="btn btn-default " type="submit" value=" Search" >
</form>
</div>
<script>
$(document).ready(function() {
src = "{{ route('searchajax') }}";
$("#search_text").autocomplete({
source: function (request, response) {
$.ajax({
url: src,
dataType: "json",
data: {
term: request.term
},
success: function (data) {
response(data);
}
});
},
minLength: 3,
select: function(event, ui) {
window.location = '{{ url('shop/{category_url}')}}' + ui.item.value
} // not sure if this is the correct way , please advise
});
});
</script>
あなたは、私が試したLeonardoCabré@ window.locationの= 'ショップ/' + ui.item.valueまたはwindow.locationの= 'ショップ/' + ui.item.label –
を試すことができます。それは動作していません。「非オブジェクトのプロパティを取得しようとしています」というエラーが発生しました。 – PioPie
'category_url'の値はどれですか、' autoComplete() 'メソッドから返すことができませんでしたか? –