在10月CMS

时间:2018-01-01 09:13:12

标签: plugins refactoring octobercms

美好的一天,

我有几个有代码的部分。在代码选项卡中,我注意到代码选项卡具有类似的代码。以下是示例

部分1

function onStart()
{
    $x = MyModel1::where('myColumn', 'myValue')->first();
    // lots of stuff using $x functions
    $this['viewData'] = $x->getViewData();
}

部分2

function onStart()
{
    $x = MyModel2::where('myColumn', 'myValue')->first();
    // lots of stuff using $x functions
    $this['viewData'] = $x->getViewData();
}

MyModel1和MyModel2都实现了相同的接口,因此它们具有相同的功能。

我的问题是,我在哪里放置类似的代码?我可以把它放在一个插件中,但这感觉不正确。我可以创建一个基类并让partials调用父方法,但是这意味着修改了vendor文件夹中的代码?

1 个答案:

答案 0 :(得分:1)

如果你真的需要管理你的代码,你可以创建组件并在那里添加那些代码,因为它们很容易附加到其他页面(下一步是你需要创建一个插件)

您可以在onRun方法中编写代码。

https://octobercms.com/docs/plugin/components#page-cycle

而是直接将变量分配给this,您需要将它们分配为

$this->page['var'] = 'value';

现在它可以像你一样工作。