Раньше у меня были проблемы с приоритетом маршрута с подсказками и предложениями, которые я преодолел, добавив регулярное выражение в свой маршрут. Теперь мой маршрут таков:
Route::get('/{country}/{category}', ['as' => 'tour.list', 'uses' => 'LinkController@tourlist'])
->where('country', '[A-Za-z]+')->where('category', '[A-Za-z]+');
Route::get('/{category}/{slug}',['as' => 'single.tour', 'uses' => 'LinkController@singleTour'])
->where('category', '[A-Za-z]+')->where('category', '[w\d\-\_]+');
с этим маршрутом я получаю сообщение об ошибке:
Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException
Когда я удаляю регулярное выражение из первого маршрута, у меня возникает та же проблема, что и раньше, и когда я удаляю регулярное выражение из второго маршрута, я получаю сообщение об ошибке:
Trying to get property of non-object
(View: F:\project\resources\views\public\tours\show.blade.php)
Мои методы в LinkController:
public function tourlist($country, $category){
$tour = Tour::whereHas('category', function($q) use($category) {
$q->where('name','=', $category);
})
->whereHas('country', function($r) use($country) {
$r->where('name','=', $country);
})
->get();
return view('public.tours.list')->withTours($tour);
}
public function singleTour($slug,$category)
{
$tour = Tour::where('slug','=', $slug)
->whereHas('category', function($r) use($category) {
$r->where('name','=', $category);
})
->first();
return view('public.tours.show')->withTour($tour);
}
И мой код в поле зрения:
<a href="{{ route('single.tour',['category' => $tour->category->name, 'slug' => $tour->slug]) }}">{{$tour->title}}</a>
example.com/england/outdoor
? - person scottevans93   schedule 07.12.2016http://localhost:8000/Croatia/Cycling
URL-адрес 2-го маршрута:http://localhost:8000/Cycling/beach-side-cycling
- person Zachary Dale   schedule 07.12.2016where('category', '[w\d\-\_]+');
бытьwhere('slug', '[w\d\-\_]+');
? - person scottevans93   schedule 07.12.2016[A-Za-z\d\-\_]+
должен поймать слизняков - person scottevans93   schedule 07.12.2016Route::get('/{category}/{slug}',['as' => 'single.tour', 'uses' => 'LinkController@singleTour']) ->where('category', '[A-Za-z]+')->where('slug', '[A-Za-z\d\-\_]+');
согласно вашему предложению. Теперь ошибкаTrying to get property of non-object
- person Zachary Dale   schedule 07.12.2016var_dump($tour);
непосредственно перед тем, как представление будет возвращено в методеsingleTour()
, и опубликуйте результат. Теперь это звучит так, как будто ваша модель не возвращает никаких данных - person scottevans93   schedule 07.12.2016NULL
. Это потому, что я сначала использовал категорию в маршруте и слаг в методе? - person Zachary Dale   schedule 07.12.2016