【问题标题】:How do i share the same variables between multiple layouts我如何在多个布局之间共享相同的变量
【发布时间】:2017-12-22 02:50:15
【问题描述】:

我有几种布局,它们共享一组通用变量。目前,我已经编写了一个可以完成工作的解决方案,但我相信还有更优雅的方法可以做到这一点。

这是我目前在布局之间共享视图变量的方式

function onStart(){
    include_once 'themes/website/layouts/include_common_view_vars.php';
    /**
       Additional $this['lucky_poker'] params here for the specific layout
       */
}

其中包含文件有我所有常用的 addCSS 和 addJS 文件等。

有更好的想法吗?

PS 我阅读了关于共享变量的Question --- 和 --- 我确实搜索了文档,但没有看到我想要的内容

【问题讨论】:

    标签: octobercms


    【解决方案1】:

    我不确定它是否能解决您的问题,但一些不同的方法可能会有所帮助。

    我们还能做什么。

    1. 创建新插件/或者如果您有相关插件,请使用该插件
    2. 定义像“SharedVars”之类的组件
    3. 您需要将它包含在您的布局中(您需要在其中访问变量的所有布局)

    现在在组件中

    public function onRun() {
        // or your file which can return values then loop through it
        // set variables in page
        $this->page['testVar'] = 'Test';
    }
    

    现在变量“testVar”将在您的所有部分以及使用此布局的所有页面中都可用。

    Value : {{ testVar }}
    

    为简单起见,您可以在数组 (sharedVars) 中分配值/变量并分配给页面。

    这样下次创建新布局时,您需要在布局中添加该组件.. 为了安全起见,我们在布局中使用 {% page %} 之前包含组件。

    这是我发现共享相同变量的另一种方式。

    注意:为了工作组件,它必须在布局中而不是在局部中,因为局部不包括在页面执行生命周期中。

    【讨论】:

      【解决方案2】:

      我认为最好的选择是使用支持 form 的主题信息文件,您可以在其中添加所有必要的数据(通过主题设置 ui)以在所有布局之间共享。

      https://octobercms.com/docs/themes/development#theme-information

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-01
        • 2012-11-14
        • 2018-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多