2lenet / dashboard-bundle
仪表板组件,小部件
1.4.4
2022-05-03 10:26 UTC
Requires
- php: >=7.2
- friendsofsymfony/jsrouting-bundle: ^2.2
Suggests
- twbs/bootstrap: ~3
README
此组件提供可自定义的小部件仪表板。
安装
composer require 2lenet/dashboard-bundle
设置组件
添加以下内容到services.yaml
App\Widgets\: resource: '../src/Widgets' tags: ['tkuska_dashboard.widget']
添加以下内容到routes.yaml
dashboard_widgets: resource: "@TkuskaDashboardBundle/Resources/config/routes.yaml"
您还需要更新数据库以包含小部件表。
php bin/console make:migration
php bin/console doc:mi:mi
制作小部件
所有小部件类都将位于src/Widgets/目录中。
它们必须扩展AbstractWidget。
use Tkuska\DashboardBundle\Widgets\AbstractWidget;
可以重写的方法
- __construct: 常规服务注入的构造函数。您至少需要一个Twig_Environment ($twig)
- getName: 必须返回小部件的通用名称
- getJsonSchema: 必须返回一个数组(将进行JSON编码),该数组表示Json Schema,用于小部件配置。(也见 https://github.com/json-editor/json-editor)
- getConfigForm: 创建配置表单。您通常不需要修改它,但在某些情况下可能需要(例如:bootstrap版本)
- support: 如果小部件受支持则返回true。如果不支持,则用户无法添加或渲染此类小部件
- supportsAjax: 如果小部件应该异步加载则返回true。如果不支持,则将直接与仪表板一起加载
- transformResponse: 接受表示小部件的Response作为参数并返回响应。默认情况下,它将小部件缓存300秒。
您必须实现render()方法。
此方法返回简单的HTML。您可以使用$twig->render("template.html.twig", array(...))。您的模板应扩展基本小部件模板,因为它有一些交互。否则,请确保您实现了这些交互。
{% extends '@TkuskaDashboard/widget/base_widget.html.twig' %}
注意,基本模板使用Bootstrap面板,这意味着您最好将小部件主体放在<div class="panel-body">
中。
如果您使用小部件配置(getJsonSchema),则必须使用getConfigForm作为'form'将表单传递给模板。
此方法渲染显示的小部件。所有您的逻辑都应该在这里。
缓存
默认情况下启用缓存,您可以使用以下方式更改超时和键:
public function getCacheKey():string{ return $this->getId() . "_".md5($this->config); } public function getCacheTimeout():int { return 300; }
上面是默认返回。
如果您想禁用小部件的缓存,getCacheTimeout必须返回0。