как мне перехватить этот вид исключения

128
27 декабря 2021, 17:20

Как в laravel сделать если не авторизован пользователь и вызвать Auth::user()->id; то возвращается ошибка Trying to get property of non-object как ее заменить на свое сообщение и редирект ? catch не отлавливаеться.

try{
         $comment= new CommentNews();
         $comment->text=$request->text;
         $comment->user_id=Auth::user()->id;
         $comment->public_id=$request->$p_id;
         $comment->save();
          return response()->json(['success'=>'Наш волонтер свяжется с Вами в ближайшее время! Благодарим за проявленный интерес']);

          }   
     catch (Exception  $exception) {
           echo('error');die;
           }
              }
             else{
                return response()->json(['errors'=>$validator->errors()->all()]);
            }
Answer 1

1) Проверку на авторизацию лучше делать через мидлвары. Готовый в Ларавел уже есть auth.

2) Если делать в лоб, то сначала проверяете наличие юзера, а потом уже достаете id.

if(!Auth::user()) throw new Exception("your message");
$comment->user_id=Auth::user()->id;

Но это плохой вариант, лучше через первый. Документация: https://laravel.com/docs/master/authentication

3) И да, это было не исключение, а ошибка, поэтому и не перехватывалось.

Answer 2

Предлагаю использовать middleware auth на ваш route.

Красиво, локанично и всем понятно.

Route::middleware(['auth'])->group(function () {
    Route::get('/', function () {
        // Uses first & second Middleware
    });
});

Ещё один вариант использования.

Route::get('admin', function () {
    //
})->middleware('admin');
Route::get('user/{id}', 'UserController@show')->middleware('admin');

Ссылка на документацию тык.

READ ALSO
Условие на значение атрибута WooCommerce

Условие на значение атрибута WooCommerce

Подскажите, пожалуйста, есть ли возможность задать условие когда определенный атрибут данного товара равен чему-то, то вывести изображение,...

188
Условие. Вывод без дублей из под foreach?

Условие. Вывод без дублей из под foreach?

И выдает собака: ok ok ok ok ok ok ok ok ok ok ok ok ok okNONONONONONONONONONONO

168
Wordpress вывод произвольного поля как meta-description

Wordpress вывод произвольного поля как meta-description

Использую плагин ACF для настройки вывода пользовательского контента через произвольные поляПомогите, пожалуйста, с решением задачи — вывод...

165
Laravel - where() по sum() поля в связанной модели

Laravel - where() по sum() поля в связанной модели

Есть модель Invoice (счёт) с полем cost (цена)Если модель Payment, связанная с моделью Invoice полем invoice_id

204