Где использовать Event Logger Controller в Laravel - PullRequest
0 голосов
/ 09 февраля 2020

Я создаю Event Controller для регистрации всех запросов к моим API. Я знаю, что использование контроллера внутри другого контроллера не очень хорошая идея, поэтому ... Где я должен его реализовать?

EventController:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Event;

class EventController extends Controller
{
    protected static $instance = null;

    /** call this method to get instance */
    public static function instance(){
        if (static::$instance === null){
            static::$instance = new static();
        }
        return static::$instance;
    }

    /** protected to prevent cloning */
    protected function __clone(){
    }

    /** protected to prevent instantiation from outside of the class */
    protected function __construct(){
    }

    public function create($type, $description){
        Event::create([
            'id_type'       => $type,
            'date_time'     => date('Y-m-d H:i:s'),
            'id_users'      => auth()->user()->id,
            'description'   => $description       
        ]);
    }
}

1 Ответ

1 голос
/ 10 февраля 2020

2 способа, которые я предлагаю:

1. Сделайте event и запустите его во всех действиях. 2. Создайте middleware и добавьте его в каждую маршрутизацию (или добавьте в маршрутную группу)

Второй вариант лучше. Потому что промежуточные программы сделаны именно по этой причине. Все запросы, отправляемые на сервер, должны сначала проходить промежуточным ПО. Вкратце: вы должны создать промежуточное ПО с php artisan make:middleware yourMiddlewareName и после добавления в него кода вашего контроллера вы должны добавить имя этого промежуточного ПО в ядре. php в массиве промежуточного ПО. Теперь он готов для назначения его для всех маршрутов, которые вы хотите, добавив ->middleware("yourMiddlewareName") в конце, если каждый.

...