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