Concrete5 5.7:如何在包仪表板单页面上使用对话框弹出窗口

时间:2015-04-30 09:19:03

标签: concrete5 concrete5-5.7

我有一个带有仪表板单页的。在这个单一页面上,我需要一个动态创建的对话框弹出窗口,等等 我还需要使用路由器,视图(package/mypackage/views)和控制器。

现在的问题如下:

  • 目录结构如何?
  • 我在哪里以及如何使用Router::register('what_path_?', 'Namespace\?\Class::method')创建到视图/控制器的路径?
  • 如何在单页面视图(Url::to(?))内调用路径并与JS对话框结合使用?

如果某些问题仍未解决,请添加评论!

2 个答案:

答案 0 :(得分:1)

添加另一个“内联代码”可能性:

<强> HTML:

<div id="my_dialog" style="display: none">
    <div>
          This is an example!
    </div>
</div>

<强> jQuery的:

$('#my_dialog').dialog({
    title: 'My Title',
    width: 500,
    height: 300,
    modal: true,
    buttons: [
        {
            text: 'Yes',
            icons: {
                primary: "ui-icon-confirm"
            },
            click: function () {
                // Confirmed code
            }
        },
        {
            text: 'No',
            icons: {
                primary: "ui-icon-cancel"
            },
            click: function () {
                $(this).dialog('close');
            }
        }
    ]
});

答案 1 :(得分:0)

要在软件包中的仪表板单页上创建模式对话框,需要执行以下步骤(假设软件包已存在):

  • 创建以下补充文件/文件夹(为了便于阅读):

    from pymatbridge import Matlab as aMATLAB   # get ready
    '''                                         # 
    mlab = aMATLAB()                            # a class instance ( empty )
    '''                                         
    mlab = aMATLAB( matlab = '...aMatlabCODE' ) # a class instance ( initialised )
    
    mlab.start()                                # True once connected.
    #
    # start playing sound here
    # ... and make MATLAB-beyond-the-bridge process it
    # ...
    # ....>>> |||||||||||||
    #         vvvvvvvvvvvvv
    results = mlab.run_code('a=1;')             # process code / vars
    
  • 'my_dialog'控制器应如下所示:

    /my_package/controllers/dialog/my_dialog.php
    /my_package/views/dialogs/my_dialog.php
    
  • 'my_dialog'视图是标准的Concrete5视图。
  • 包控制器中添加(如果不存在)以下方法:

    namespace Concrete\Package\MyPackage\Controller\Dialog;
    
    use Concrete\Core\Controller\Controller;
    
    class MyDialog extends Controller
    {
        protected $viewPath = 'dialogs/my_dialog';
    
        public function view()
        {
            /** your code */
        }
    }
    
  • 现在位于单页面视图

    public function on_start()
    {
        Route::register('/my_package/my_dialog',
        '\Concrete\Package\MyPackage\Controller\Dialog\MyDialog::view');
    }
    

注意:

可以命名路线但是有人想要它(例如:<a class="btn btn-default btn-xs" data-button="my-dialog">My dialog</a> <script type="text/javascript"> $('a[data-button=add-event]').on('click', function() { $.fn.dialog.open({ href: '<?= URL::to('/my_package/my_dialog'); ?>', title: 'My dialog', width: '280', height: '220', modal: true }); return false; }); </script> )。

对话JS的调用可能会得到更好的处理,请对其进行评论。