关于 sucess和error模板页面的建议

a479820787 2月前 140

如果是ifrme页面或者是Layer的iframe弹窗页面 调用控制器时如果直接走$this->error();会出现以下情况
iframe页面:https://cdn.forum.fastadmin.net/uploads/201803/09/64b27adf630e91647b607f092896221a
会跳转死循环
Layer 的iframe弹窗https://cdn.forum.fastadmin.net/uploads/201803/09/8c893165108b0ba0354bfe18e60516a4
(如果是error应该不打开弹窗只是一个提示)
建议对错误和成功的提示模板(根目录\application\common\view\tpl\dispatch_jump.tpl)做以下修改:
https://cdn.forum.fastadmin.net/uploads/201803/09/374e5644dc237e19f6e0ae88b295504b
下面是body里面的完整代码:

  <div id="main" style="display: none;" class="system-message <?php echo $code == 1 ? 'success' : ($code == 0 ? 'error' : 'info');?>">
            <div class="image">
                <img src="__CDN__/assets/img/<?php echo $code == 1 ? 'success' : ($code == 0 ? 'error' : 'info');?>.svg" alt="" width="150" />
            </div>
            <h1><?php echo($msg);?></h1>
            <p class="jump">
                页面将在 <span id="wait"><?php echo($wait);?></span> 秒后自动<a id="href" href="<?php echo($url);?>">跳转</a>
            </p>
            <p class="clearfix">
                <a href="javascript:history.go(-1);" class="btn btn-grey">返回上一步</a>
                <a href="<?php echo($url);?>" class="btn btn-primary">立即跳转</a>
            </p>
        </div>
        <script type="text/javascript">
            (function () {
                if (self != top) {
                    var index = parent.Layer.getFrameIndex(window.name);
                    if(index){
                    <?php if($code == 1){ ?>
                            parent.Toastr.success("<?php echo($msg);?>");
                        <?php }else{ ?>
                            parent.Toastr.error("<?php echo($msg);?>");
                        <?php } ?>
                        parent.Layer.close(index);
                    }else {
                        parent.Toastr.error("<?php echo($msg);?>");
                        top.window.$(".fa-remove").last().trigger("click");
                    }
                }else {
                    document.getElementById('main').style.display="block";
                    var wait = document.getElementById('wait'),
                        href = document.getElementById('href').href;
                    var interval = setInterval(function () {
                        var time = --wait.innerHTML;
                        if (time <= 0) {
                            location.href = href;
                            clearInterval(interval);
                        }
                    }, 1000);
                }
            })();
        </script>

修改完毕后再打开无权限或者限制打开的页面就会自动关闭页面并正常报错
https://cdn.forum.fastadmin.net/uploads/201803/09/f91baf4a78a3e5c45051900ade35b6d2

最后于 2月前 被Karson编辑
最佳回复
  • Karson 2月前

    @a479820787 这个应该在一张图解中有描述。
    可以在给table添加

    data-operate-detail="{:$auth->check('example/detail')}"

    data-buttons-detail="{:$auth->check('example/detail')}"

    来实现。operate针对使用Table.api.formatter.operate列,buttons针对formatter:Table.api.formatter.buttons的自定义列。

最新回复 (6)
  • Karson 打赏 2月前
    感谢TA
    0 引用 2

    @a479820787 感谢你的分享,FA在在错误提示页面的确有待优化。
    通常情况下如果管理员没有某个链接或按钮的权限,我们应该将其不可见,不让他去访问这个页面也就不会出现这个问题了。

  • a479820787 楼主 2月前
    感谢TA
    0 引用 3

    @Karson 开发中会有很多自定义按钮,最常见的是表格的操作栏会添加一些自定义按钮,我没找到自定义按钮如果根据权限判断展不展示的说明,直接全部展示的,就碰见了这种问题。顺带问一下,你们有在js中判断是否展示该按钮的方法么。https://cdn.forum.fastadmin.net/uploads/201803/09/c0a6cf19035744c6191d624204be597b
    就像这里判断是否有查看详情的权限来识别是否展示此按钮

  • Karson 打赏 最佳回复 2月前
    感谢TA
    0 引用 4

    @a479820787 这个应该在一张图解中有描述。
    可以在给table添加

    data-operate-detail="{:$auth->check('example/detail')}"

    data-buttons-detail="{:$auth->check('example/detail')}"

    来实现。operate针对使用Table.api.formatter.operate列,buttons针对formatter:Table.api.formatter.buttons的自定义列。

  • a479820787 楼主 2月前
    感谢TA
    0 引用 5

    @Karson 图解中确实有这段代码,但是图解并没有详细说明,我大致理解什么意思了。建议写一个全面的关于表格的文档详细介绍所有参数

  • zyuz 2月前
    感谢TA
    0 引用 6

    这个问题,我在实际写的过程中也有遇到。。不知道如何才能更简便实现。。
    {name: 'detail', text: '自评表', title: '自评表', icon: 'fa fa-list', classname: 'btn btn-xs btn-primary btn-dialog', url: 'jxxzjpf/add/sbb/0'}
    如果这里的url不接受直接写function进去,要是能的话就好了。直接改url。。

    最后于 2月前 被zyuz编辑
  • 未登录
    8
返回
发表回复