我尝试创建一个RecordWidget,以在OctoberCMS的仪表板上使用。 但是我正在努力渲染widget.htm。
文件系统的结构如下
plugins
ds
irental
reportwidgets
welcome
assets
css
partials
_widget.htm
Welcome.php
_widget.htm:
<div class="report-widget widget-welcome">
<h3>Test</h3>
<div class="welcome-container">
<div class="welcome-logo">
<div class="oc-logo"></div>
</div>
<div class="welcome-message">
</div>
</div>
</div>
Welcome.php:
<?php namespace ds\Irental\ReportWidgets;
use Backend\Classes\ReportWidgetBase;
class Welcome extends ReportWidgetBase
{
public function defineProperties() {
return [
'title' => [
'title' => 'Test'
]
];
}
public function init() {
}
/**
* Renders the widget.
*/
public function render()
{
return $this->makePartial('widget');
}
}
插件:
<?php namespace ds\Irental;
use System\Classes\PluginBase;
class Plugin extends PluginBase
{
public function registerComponents()
{
}
public function registerSettings()
{
}
/*
* Register report widgets
*/
public function registerReportWidgets()
{
return [
'ds\Irental\ReportWidgets\Welcome' => [
'label' => 'IRental',
'context' => 'dashboard'
]
];
}
}
我试图遵循octoberCMS上的文档。 https://octobercms.com/docs/backend/widgets#report-widgets 但是我不能使它工作。我会错过某些设置吗?
答案 0 :(得分:1)
我想您的文件结构正在造成问题
错误的类位置[您当前的文件系统结构]
plugins
ds
irental
reportwidgets
welcome
assets
css
partials
_widget.htm
Welcome.php <- problem its inside `welcome` folder
因此,当您的Welcome.php
较深时,它尝试从那里CLASS_LOCATION/welcome/partial/_widget.php
进行搜索,但找不到它。
这里CLASS_LOCATION是welcome
文件夹
正确的课堂位置[修订]
plugins
ds
irental
reportwidgets
welcome <--
assets |
css |
partials |
_widget.htm |
Welcome.php <-- it need to be in same level
现在正确了,因此可以在适当的位置找到部分
CLASS_LOCATION/welcome/partial/_widget.php
这里CLASS_LOCATION是reportwidgets
文件夹
更新
是的,似乎您使用的文件夹名称与类名称不同
它将选择基于类名的局部词,将其转换为更低的词,然后从类当前位置开始搜索。
如有疑问,请发表评论。