Php 路线和窗口位置-Laravel

Php 路线和窗口位置-Laravel,php,jquery,laravel,laravel-5,autocomplete,Php,Jquery,Laravel,Laravel 5,Autocomplete,在我的分类页面和产品页面中,我有一个名称和id相同的搜索字段。自动完成建议似乎工作正常,但一旦我在搜索字段中单击搜索建议,它会将我的搜索字符串转换为整数,这是我的产品id。之后,它会将我重定向到“mysite/products id”,并使用“此菜单没有内容”。我想问题出在我的JS中我的路线和我的window.location上,但我想不出来 这是我的密码 我的路线 Route::get('products/{id}', 'AutoCompleteController@show'); R

在我的分类页面和产品页面中,我有一个名称和id相同的搜索字段。自动完成建议似乎工作正常,但一旦我在搜索字段中单击搜索建议,它会将我的搜索字符串转换为整数,这是我的产品id。之后,它会将我重定向到“mysite/products id”,并使用“此菜单没有内容”。我想问题出在我的JS中我的路线和我的window.location上,但我想不出来

这是我的密码

我的路线

Route::get('products/{id}', 'AutoCompleteController@show');
    Route::get('autocomplete',array('as'=>'autocomplete','uses'=>'AutoCompleteController@show'));
    Route::get('searchajax',array('as'=>'searchajax','uses'=>'AutoCompleteController@autoComplete'));   
连接到类别和产品的路线很少:

Route::get('shop', 'ShopController@categories');// my categories page

Route::get('shop/{category_url}', 'ShopController@products');  // my products page 
我的自动完成控制器:

  <?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'=>''];
    }}

} 

在您的
自动完成方法中:

    foreach ($products as $product) {
        // I guess you have product->cagegory relationship, and category model
        // has a URL?
        $category_url = $product->category->url; 
        $data[]=array('label'=>$product->title,'value'=>$category_url);
    }
现在,您的自动完成结果包括category_url,因此您只需更新您的JS:

window.location = '{{ url("shop/" + ui.item.value) }}';

您可以尝试window.location='shop/'+ui.item.value或window.location='shop/'+ui.item。label@LeonardoCabré我试过了。它不起作用。我得到一个错误“尝试获取非对象的属性”,它的值是
category\u url
,我想你错过了从
autoComplete()
方法返回的值?我的{category\u url}有一个动态值…如何在我的自动完成中返回它?所以我可以假设
$product->title
on是用于
类别url
或其他?检查OP的注释*我的产品表包括id、类别id、标题、文章、url、imageupfated\u at、created\u at‌​... 没有类别url*。
$product->category->url
在您的答案中是如何工作的?@AddWebSolutionPvtLtd再次检查我的答案,记下解释您所问内容的注释,然后阅读Laravel关系。@Don't是的,我在category.php模型中有一对多的关系。这是我的一些category.php模型代码好,我可以看到你应该能够做
$product->category
来获得分类,我看到category有一个
url
字段。所以我上面的答案应该可以。
window.location = '{{ url("shop/" + ui.item.value) }}';