rayamedia/yima-widgetator

此包的最新版本(dev-master)没有可用的许可信息。

Widgetator 布局模块。

安装: 19

依赖: 1

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:yima-core-module

dev-master 2015-06-24 17:44 UTC

This package is auto-updated.

Last update: 2024-09-24 05:20:56 UTC


README

本模块是 Yima 应用框架的一部分

查看实际效果

什么是 Widget

Widget 是一个实现最小接口 WidgetInterface 的类

interface WidgetInterface
{
    /**
     * Render widget as string output
     *
     * @return string
     */
    public function render();
}

Widget 插件管理器

Widgets 存储在 widget 插件管理器(widget 的服务定位器)。使用服务管理器键 yimaWidgetator.WidgetManager 存储,并作为工厂服务构建。

从合并的配置中定义 widget(s)

return array(
    /**
     * Register Widgets in WidgetManager
     *
     * each widget must instance of WidgetInterface
     */
    'yima_widgetator' => [
        // This is configurable service manager config
        'services' => [
            'invokables' => [
                # 'widgetName' => 'Widget\Class',
            ],
            'initializers' => [
                // DB: Using Global db Adapter on each services Implemented AdapterAwareInterface
                function ($instance, $sl) {
                    if ($instance instanceof \Zend\Db\Adapter\AdapterAwareInterface) {
                        $sm = $sl->getServiceLocator();
                        $instance->setDbAdapter(
                            $sm->get('Zend\Db\Adapter\Adapter')
                        );
                    }
                }
            ],
        ],
        'widgets' => [
            /** @see RegionBoxContainer */
            'region_box' => [
                # // $priority default is start with 0
                # $priority => 'WidgetName',
                # $priority => [
                #    'widget' => 'WidgetName'
                #    'params' => [
                #       'with_construct_param' => 'param_value'
                #     ]
                # ],
            ],
        ],
    ],

如何获取 Widgets?

在控制器中通过控制器助手

$this->layout()->side_bar = $this->widget('widgetName')->render();

在视图脚本中

<div class="container">
    <p><?php echo $this->widget('widgetName')->render();?></p>
</div>

使用 Ajax 调用加载 Widgets

ajax widget 加载需要一些在模块的 www 文件夹中可以找到的 js 资源。你可以将文件放在任何你想的地方,并编辑 config\module.config.php

return array(
    /**
     * Libraries that used in Ajax Loading of widgets.
     * @see \yimaJquery\View\Helper\WidgetAjaxy
     */
    'static_uri_helper' => array(
        'Yima.Widgetator.JS.Jquery.Ajaxq' => '$basepath/js/yima-widgetator/jquery.ajaxq.min.js',
        'Yima.Widgetator.JS.Jquery.Json'  => '$basepath/js/yima-widgetator/jquery.json.min.js',
    ),

有关 static_uri_helper 的更多信息,请参阅 yimaStaticUriHelper

在视图脚本中

<div class="container">
    <p id="container_id">
        <?php
        echo $this->widgetAjaxy('widgetName',   // widget name
            array('option' => 'value'),         // options
            'container_id',                     // id of dom element
            'function callback(response)'       // callback after loading widget
            );
        ?>
    </p>
</div>

我正在努力改进 Widgets 的 Ajax 加载。

最后

我们有一些名为:AbstractWidget 和 AbstractMvcWidget 的抽象类 Widgets。(查看)

待办事项

将添加示例 Widgets 和 AbstractClasses。

安装

要求

Composer 安装

在您的 composer.json 中包含 rayamedia/yima-widgetator

或克隆到模块文件夹

在应用程序配置中启用模块

支持

要报告错误或请求功能,请访问 问题跟踪器

请随时通过新的问题、请求和代码修复或新功能来贡献。