think.studio/laravel-recently-viewed
最新稳定版本:4.2.1
Composer 安装命令:
composer require think.studio/laravel-recently-viewed
包简介
Package to make quickly recently viewed functionality
README 文档
README
Add functionality to save/get in session recently viewed entities
You can track any number of entities. Each list will be saved separately.
Session storage (without persist)
For example:
"recently_viewed" => array:2 [ "App\Models\Product" => array:2 [ 0 => 'a3cda131-e599-4802-84ea-a3dddc19fa8c' 1 => '4413b636-9752-43b3-8361-3ef38c27acf9' ] "App\Domain\Property" => array:3 [ 0 => 133 1 => 134 2 => 653 ] ]
Installation
You can install the package via composer:
composer require think.studio/laravel-recently-viewed
You can publish the config file with:
php artisan vendor:publish --provider="RecentlyViewed\ServiceProvider" --tag="config"
Configuration in .env
# Optional RECENTLY_VIEWED_SESSION_PREFIX=recently_viewed
Usage example
<?php use Illuminate\Database\Eloquent\Model; use RecentlyViewed\Models\Contracts\Viewable; use RecentlyViewed\Models\Traits\CanBeViewed; class Product extends Model implements Viewable { // implement interface use CanBeViewed; }
<?php class ProductController extends Controller { public function show(Product $product) { \RecentlyViewed\Facades\RecentlyViewed::add($product); return view('my-view'); } }
<?php class ProductsViewComposer { public function compose(View $view) { $view->with([ 'recentlyViewedProducts' => \RecentlyViewed\Facades\RecentlyViewed::get(Product::class), // or 'recentlyViewedProductsWithoutLast' => \RecentlyViewed\Facades\RecentlyViewed::get(Product::class)->slice(1), ]); // or $view->with([ 'recentlyViewedProductsFiltered' => \RecentlyViewed\Facades\RecentlyViewed::getQuery(Product::class) ?->where('not_display_in_recently_list', false)->get() ??collect([]), ]); } }
Add persist storage
You can enable migration and run the migrations with adding this to register() in AppServiceProvider or any other service provider:
\RecentlyViewed\PersistManager::enableMigrations();
php artisan migrate
Configuration in .env
RECENTLY_VIEWED_PERSIST_ENABLED=true
use RecentlyViewed\Models\Contracts\Viewer; use RecentlyViewed\Models\Traits\CanView; class User extends Authenticatable implements Viewer { use CanView; // ... }
Add "merge" method after login (if you want merge saved data before login and already stored data)
class LoginController extends Controller { // ... protected function authenticated(Request $request, $user) { \RecentlyViewed::mergePersistToCurrentSession(); } }
Credits
统计信息
- 总下载量: 5.45k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 11
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-09-09