在十月 CMS 中重构一个部分

Refactoring a Partial in October CMS

美好的一天,

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

部分 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实现了相同的接口,所以功能相同

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

如果您真的需要管理您的代码,您可以创建组件并在其中添加该代码,因为它们很容易附加到其他页面(缺点是您需要创建一个插件)

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

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

而不是直接将变量分配给 this 你需要像

那样分配它们
$this->page['var'] = 'value';

现在它将像您一样工作。