ECMall中Widgets模式的布局引擎

简介: 自己做过框架的人,可能都会思考一个问题,模板引擎需要什么特性?   Widgets模式,很多系统中都有出现,但对于纯开发人员,不管前端或后台人员来说,都觉得稍微麻烦了一点。因为他将界面硬生生的拆分出了很多零散的部分,对于编程人员来说,有点不流畅的感觉。

自己做过框架的人,可能都会思考一个问题,模板引擎需要什么特性?

 

Widgets模式,很多系统中都有出现,但对于纯开发人员,不管前端或后台人员来说,都觉得稍微麻烦了一点。因为他将界面硬生生的拆分出了很多零散的部分,对于编程人员来说,有点不流畅的感觉。

 

ECMall中也使用了Widgets的特性。

 

Widgets在使用时,可以接受参数的定义,这样尽可能的重复使用代码,而且逻辑与表现分离,开发和维护比较方便。

 

只是ecmall中的widgets 不支持指定 表现代码,某个widgets的所有实例只能使用同一个视图文件。

 

如果能增加自定义视图的特性,将会比较完美。

 

ps 一句话搞定

widget.base.php

/**
     *    将取得的数据按模板的样式输出
     *
     *    @author    Garbin
     *    @return    string
     */
    function get_contents()
    {
        /* 获取挂件数据 */
        $this->assign('widget_data', $this->_get_data());

        /*可能有问题*/
        $this->assign('options', $this->options);
        $this->assign('widget_root', $this->widget_root);
        
        $widget_filename = empty($this->options['view']) ? 'widget' : $this->options['view']; //这句话

        return $this->_wrap_contents($this->fetch($widget_filename)); //相应调整
    }

 

目录
相关文章
|
5月前
Qt 布局管理之 停靠窗口QDockWidget
Qt 布局管理之 停靠窗口QDockWidget
141 0
QT5布局管理
分割窗口 QSplitter类在应用程序中经常用到,它可以灵活分布窗口的布局,经常用 在类似文件资源管理器的窗口设计中。
100 0
|
前端开发
#yyds干货盘点 ant design table实现上下行拖拽功能(类组件)
#yyds干货盘点 ant design table实现上下行拖拽功能(类组件)
180 0
Qt5——布局管理
Qt5——布局管理
325 0
Qt5——布局管理
|
XML 前端开发 定位技术
Android MVVM框架使用(十三)UI更新 (App启动白屏优化、适配Android10.0深色模式)
Android MVVM框架使用(十三)UI更新 (App启动白屏优化、适配Android10.0深色模式)
393 0
Android MVVM框架使用(十三)UI更新 (App启动白屏优化、适配Android10.0深色模式)
|
JSON 数据格式 容器
解决盒约束、widget和assets里的加载资产技术在Flutter框架运用的方案【Flutter高级技术】
解决盒约束、widget和assets里的加载资产技术在Flutter框架运用的方案【Flutter高级技术】
|
API Android开发
Material Design 实战 之 第六弹 —— 可折叠式标题栏(CollapsingToolbarLayout) & 系统差异型的功能实现(充分利用系统状态栏空间)
Material Design 实战 之 第六弹 —— 可折叠式标题栏(CollapsingToolbarLayout) & 系统差异型的功能实现(充分利用系统状态栏空间)
|
前端开发 C++
qt 如何设计好布局和漂亮的界面。
qt 如何设计好布局和漂亮的界面。
1070 1
qt 如何设计好布局和漂亮的界面。
|
JavaScript 前端开发 小程序
APICloud AVM框架 纵向滚动通知栏组件
用于循环播放展示一组消息通知,实现了纵向滚动。
APICloud AVM框架 纵向滚动通知栏组件
|
开发框架 小程序 Android开发
列表组件list-view的使用、flex布局教程,以APICloud AVM框架为例
avm.js是 APICloud 推出的多端开发框架。使用 avm.js 一个技术栈可同时开发 Android & iOS 原生 App、小程序和 iOS 轻 App,且多端渲染效果统一;全新的 App 引擎 3.0 不依赖 webView,提供百分百的原生渲染,保障 App 性能和体验与原生 App 一致。
499 0