я использую AntonioRiveiro / Tracker репо для моего Laravel приложение. Я хотел бы добавить к нему больше функциональности, которого нет в стандартной комплектации.
Но я не могу найти, где создается его экземпляр, или как получить доступ к Tracker
объект в моих контроллерах.
Или как мне расширить объект трекера?
Поэтому я думаю, что для вас проще всего сделать следующее:
Во-первых, сделайте свой собственный ServiceProvider
php artisan make:provider CustomTrackerServiceProvider
Теперь откройте этот файл, нам нужно будет внести некоторые изменения.
Во-первых, нам нужно расширить ServiceProvider, который предоставляет Tracker.
use PragmaRX\Tracker\Vendor\Laravel\ServiceProvider as TrackerServiceProvider
class CustomTrackerServiceProvider extends TrackerServiceProvider
use
Псевдоним выше не требуется, но я предпочитаю его для ясности, учитывая соглашение об именах, аналогичное базовой платформе.
Теперь вам нужно заменить использование PragmaRX\Tracker\Vendor\Laravel\ServiceProvider
в вашем config/app.php
файл под providers array
config/app.php
'providers' => [
//other providers and what have you
App\Http\Providers\CustomTrackerServiceProvider::class
]
Теперь у вас есть возможность вносить изменения. Вы можете переопределить функциональность по умолчанию основного класса, если его член не private
,
Посмотрите файл, предоставленный поставщиком, и определите образец архитектуры, аналогичный сопровождающему поставщика, и все будет хорошо.
Ответ на этот вопрос дает решение для (2), я нашел ответ на (1) Вот.
Для доступа к объекту трекера вам необходимо включить:
use PragmaRX\Tracker\Vendor\Laravel\Facade as tracker;
Тогда вы будете делать что-то вроде:
$visitor = Tracker::currentSession();
как описано в документация.