【问题标题】:Refactoring a Partial in October CMS在 10 月 CMS 中重构部分内容
【发布时间】:2018-06-11 10:04:22
【问题描述】:

早安,

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

部分 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 都实现了相同的接口,所以它们具有相同的功能。

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

【问题讨论】:

    标签: plugins refactoring octobercms


    【解决方案1】:

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

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

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

    而不是直接将变量分配给this,您需要像这样分配它们

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

    现在它会和你一样工作。

    【讨论】:

    • 我只觉得“错误”,因为它使我的插件依赖于另一个插件。感觉就像是进入依赖地狱的第一步。
    • 为什么你需要其他插件你可以只为这个东西专用这个插件,不要把这个插件用于其他东西,因为几乎所有的主题都依赖于商店、博客、静态页面等中的一些插件..(依赖意味着我们正在重用代码),如果我们处理得当,你就不用担心了。
    猜你喜欢
    • 2019-06-09
    • 2021-05-24
    • 1970-01-01
    • 2018-01-04
    • 2019-01-26
    • 2019-04-01
    • 1970-01-01
    • 2020-08-06
    • 2019-02-03
    相关资源
    最近更新 更多