从插件配置文件定义 data-options@
Define data-options@ from plugin config file
我做了一个简单的Grav插件来添加一些用户信息!
我想在 template.html.twig
上制作新蓝图
这是一个插件配置 yaml 文件:
enabled: false
authors:
-
name: Author 1
desc: Description 1
-
name: Author 2
desc: Description 2
custom_file:
这是蓝图:
header.author:
type: select
label: Author
classes: fancy
data-options@: '\Grav\Plugin\AuthorsPlugin::getAuthors'
我在插件 php 文件中有这个:
public static function getAuthors() {
$author_name = $this->grav['config']->get('plugins.authors.name');
}
我收到错误:
不在对象上下文中时使用 $this
有什么解决办法吗?谢谢!
问题在于,由于您的函数是 static
,因此您的 class 尚未初始化(没有 $this
或 $this->grav
,它们在构造函数中设置时创建 class).
的实例
虽然没有看到整个 class,但希望这足以引导您朝着正确的方向前进...
在 php 文件的顶部导入 Grav class 如果尚未导入,
use Grav\Common\Grav;
然后修改您的函数以调用 Grav::instance()
而不是 $this->grav
:
$author_name = Grav::instance()['config']->get('plugins.authors.name');
此 instance()
函数会创建您获取配置所需的 Grav 实例。
我做了一个简单的Grav插件来添加一些用户信息! 我想在 template.html.twig
上制作新蓝图这是一个插件配置 yaml 文件:
enabled: false
authors:
-
name: Author 1
desc: Description 1
-
name: Author 2
desc: Description 2
custom_file:
这是蓝图:
header.author:
type: select
label: Author
classes: fancy
data-options@: '\Grav\Plugin\AuthorsPlugin::getAuthors'
我在插件 php 文件中有这个:
public static function getAuthors() {
$author_name = $this->grav['config']->get('plugins.authors.name');
}
我收到错误: 不在对象上下文中时使用 $this
有什么解决办法吗?谢谢!
问题在于,由于您的函数是 static
,因此您的 class 尚未初始化(没有 $this
或 $this->grav
,它们在构造函数中设置时创建 class).
虽然没有看到整个 class,但希望这足以引导您朝着正确的方向前进...
在 php 文件的顶部导入 Grav class 如果尚未导入,
use Grav\Common\Grav;
然后修改您的函数以调用 Grav::instance()
而不是 $this->grav
:
$author_name = Grav::instance()['config']->get('plugins.authors.name');
此 instance()
函数会创建您获取配置所需的 Grav 实例。