xlabs / socialbundle
点赞/关注/评分/书签管理包
5.0.3
2024-08-02 15:43 UTC
Requires
- php: >=7.2
- predis/predis: ^2.2
- symfony/framework-bundle: >=5.0
- xlabs/rabbitmqbundle: ^5.0
This package is auto-updated.
Last update: 2024-09-02 15:52:52 UTC
README
一个由 Redis 驱动的点赞引擎。
安装
通过 composer 安装
php -d memory_limit=-1 composer.phar require xlabs/likebundle
此包依赖于 "xlabs/rabbitmqbundle"。请确保也设置它。
在你的 AppKernel 中
public function registerbundles()
{
return [
...
...
new XLabs\LikeBundle\XLabsSocialBundle(),
];
}
php bin/console doctrine:schema:update --force
路由
追加到主路由文件
# app/config/routing.yml
xlabs_like_engine:
resource: "@XLabsLikeBundle/Resources/config/routing.yml"
#prefix: /
配置示例
以下显示默认值
# app/config/config.yml
x_labs_like:
redis_settings:
host: 192.168.5.23
port: 6379
database_id: 7
_key_namespace: 'xlabs:like'
_star_key_namespace: 'xlabs:star'
backup: # for mysql backup/restore
<alias>: <entity_FQCN>
star_rating:
amount: 5 # amount of stars, 5 is the default
assetic:
...
bundles: [ ..., 'XLabsLikeBundle']
...
用法
将此追加到模板中的任何位置
{% include 'XLabsLikeBundle:Like:loader.html.twig' %}
要查看示例模板,请检查
XLabsLikeBundle:Like:example.html.twig
MySQL 备份
请确保运行以下命令。这是将所有操作保存到项目数据库中的消费者。
php bin/console xlabs:like:mysql_backup --no-debug
如果 Redis 失去所有数据,您可以通过执行以下命令来恢复它
php bin/console xlabs:like:restore --no-debug
如果您已经在 Redis 中有数据,并想创建其 MySQL 备份,以下是一个示例的一次性命令,您应该将其复制到您的项目中并适当修改
php bin/console xlabs:like:initial_backup --no-debug
事件监听器
如果您想在前端发生点赞时执行某些操作,您可以创建一个事件监听器,如下所示
# YourBundle/Resources/config/services.yml
...
xlabs_like.event_listener:
class: YourBundle\EventListeners\YourListener.php
tags:
- { name: kernel.event_listener, event: xlabs_like.event, method: yourListenerMethod }
use Symfony\Component\EventDispatcher\Event;
class YourListener extends Event
{
public function yourListenerMethod(Event $event)
{
dump($event->getLike()); die;
}
}
$event 变量包含有关已发生的点赞操作的所有信息。
调整
默认情况下,服务使用会话中的用户。如果您想使用任何特定的用户来执行点赞操作,以使用此服务
$user = $em->getRepository('YourBundle:YourUserEntity')->find(<ID>);
$like_engine = $container->get('xlabs_like_engine');
$like_engine->setUser($user);
$like_engine->...