@flafy4

Как убрать ошибку Trying to get property of non-object?

При обращении по адресу example.com/admin/products/4 - (4 это например) выдает ошибку Trying to get property of non-object в контроллере PagesController хотя обращаюсь к AdminPagesController.

Роуты:
Route::get('/{category}/{id}/{slug}', 'PagesController@getProduct')->name('getProduct');

// Админ-панель
Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function() {

	Route::get('/', 'AdminPagesController@getDashboard');

	Route::get('/products', 'AdminPagesController@getProducts');
	Route::get('/products/{$id}', 'AdminPagesController@getProduct');  // Проблема возникает при обращении к этому роуту

});


PagesController.php
public function getProduct($category, $id, $slug) {
    	$product = Product::find($id);

       // Ошибка на строке ниже, где if
    	if($product->category->slug == $category && $product->id == $id && $product->slug == $slug) {

            return view('front.product_page')->withProduct($product);

    	}
    	else {
    		return abort(404);
    	}
    }


AdminPagesController.php
public function getProduct($id) {
        
        echo $id;
    }


За ранее спасибо!
  • Вопрос задан
  • 4289 просмотров
Пригласить эксперта
Ответы на вопрос 1
v_decadence
@v_decadence
До конца не понял, но думаю ошибка в том, что find возвращает null, если такого id нет в базе, что и даёт ошибку при попытке обратиться к свойству null.
Как вариант: проверять product через is_null.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы