全站动态
HDCMS / 更新于5个月前

全站动态

动态用于记录模块的变化,可以反映用户在网站活动的记录。

[TOC]

模型定义

在模型中定义动态机制后,在模块发生变化时系统会自动记录动态数据。

  1. 引入trait与定义记录属性

    use Spatie\Activitylog\Traits\LogsActivity;
    use App\Traits\Site;
    class NewsItem extends Model
    {
    // 引入动态trait
    use LogsActivity, Site;
    
    //设置动态记录的属性,不要记录过多或过大的数据将影响性能
    protected static $logAttributes = ['title']
    
    //记录动态类型
    protected static $recordEvents = ['created'];
    
    //返回当前模型的链接
    public function getActivityLink(){
    return module_link('comment.content.show', $this);
    }
    
    //返回当前模型的标题
    public function getActivityTitle(){
        return mb_substr($this['content'], 0, 80, 'utf-8');
    }
  2. 声明模型动作
    默认情况下,包将记录createdupdateddeleted的事件。您可以通过$recordEvents在模型上设置属性来修改此行为。

class NewsItem extends Model
{
    use LogsActivity;
    protected static $recordEvents = ['created','updated'];
}
  1. 记录模块属性

系统服务

系统提供了 ActivityServer 服务来操作动态,依赖注入使用即可。

public function index(ActivityServer $activityServer)
{
   $activities = $activityServer->query()->get();
}

获取所有动态

获取站点的所有动态数据。

$activityServer->query()->get();

获取用户动态

返回指定用户的动态信息,根据需要可以在添加条件进行过滤。

$activityServer->getByUser(auth()->user())->get()

获取用户指定模块的动态

$activityServer->getByUser(auth()->user(),'Edu')->get()

获取模块动态

返回指定模块标识的动态信息,根据需要可以在添加条件进行过滤。

$activityServer->getByModule('Edu','Shop')->get();
// 或使用数组传参
$activityServer->getByModule(['Edu','Shop'])->get();

读取动态

$activity = Activity::all()->last();
$activity->description; // 动态类型 created,updated
$activity->subject; //返回模块对象
$activity->causer;//用户对象
$activity->log_name;//日志名
$activity->getExtraProperty('attributes')['title'];//获取自定义title属性
$activity->changes; //返回记录的模型属性数据;
我们的使命:传播互联网前沿技术,帮助更多的人实现梦想
Copyright © 2010-2018 houdunren.com All Rights Reserved 京ICP备12048441号-3
: 010-86467608 : 2300071698@qq.com
编码: 海豚日记