【发布时间】:2020-06-29 16:47:54
【问题描述】:
我刚开始十月CMS。我正在努力定义一些可以在整个应用程序中使用的功能,这意味着可以从任何插件、页面、部分、布局中访问它。这是必须保持干净的代码。我试图从 october cms 官方文档中找到任何提示,但没有运气。有什么想法吗?
【问题讨论】:
标签: octobercms
我刚开始十月CMS。我正在努力定义一些可以在整个应用程序中使用的功能,这意味着可以从任何插件、页面、部分、布局中访问它。这是必须保持干净的代码。我试图从 october cms 官方文档中找到任何提示,但没有运气。有什么想法吗?
【问题讨论】:
标签: octobercms
我找到了这个可能对其他人有帮助的解决方案:
创建您自己的插件。 在 OctoberCMS 中创建自己的插件有无数种方法,但如果你不知道如何做到这一点,我认为你应该使用 Builder 插件,这使得插件创建变得容易(阅读其文档了解详细信息)。 https://octobercms.com/plugin/rainlab-builder 当然,如果您已经使用过上面的脚本,您可能知道如何创建插件,但是这些信息对于以后阅读这篇文章的初学者很有用。
在您的插件文件夹中创建一个自定义类 打开您的插件文件夹(例如:./plugins/oskar/tutorial ...其中 oskar 是您的作者姓名,tutorial 是插件的名称)并在您的插件文件夹(./plugins/奥斯卡/教程/课程)。在“classes”文件夹中创建一个名为“MyClass.php”的新 PHP 文件,其中包含以下内容:
<?php
namespace Oskar\Tutorial\Classes;
class MyClass
{
public static function myMethod($param1)
{
return "Hello " . $param1;
}
}
注意:请记住,您必须根据您的真实作者和插件名称更改命名空间,并且文件名需要与其中的类名匹配(哦,别忘了该命名空间和类名区分大小写)..
使用新功能扩展 Twig 标记语言 打开以编辑插件文件夹(./plugins/oskar/tutorial/Plugin.php)中的“Plugin.php”并添加以下代码:
public function registerMarkupTags()
{
return [
'functions' => [
'myFunction' => ['\Oskar\Tutorial\Classes\MyClass', 'myMethod'],
]
];
}
注意:同样,不要忘记根据需要更改命名空间。
你已经完成了!
现在你可以像以前一样在 Twig 中使用这个函数了:
{{ myFunction('world!') }}
但您也可以在 cms 页面的 php 部分调用相同的方法:
use Oskar\Tutorial\Classes\MyClass;
function onStart()
{
echo MyClass::myMethod('world!');
}
就是这样。
【讨论】:
我不知道你想要做什么样的功能。您可以像这样从一个插件调用 php 函数:创建并注册一个新插件(插件 A)。然后,您可以创建/调用组件来处理事件处理程序或创建一个“类”文件夹。
这是一个用于在线订购产品的插件(插件 B)示例。这会使用您的所有功能(插件 A)调用您的插件:
use Author\PluginA\Classes\CustomFunctions;
function onSubmitOrder() {
$customFunctions = new CustomFunctions;
$inputs = Input::all();
$order = $customFunctions->validateOrder($inputs);
if ($order->success == true) {
return $order;
} else {
return $order->error;
}
}
【讨论】: