用户
 找回密码
 入住 CI 中国社区
搜索
12
返回列表 发新帖
楼主: dzwlxk
收起左侧

[Ajax] 获取函数值

[复制链接]
发表于 2018-8-10 00:32:18 | 显示全部楼层
dzwlxk 发表于 2018-8-9 21:15
老大,现在已解决js通过JSON方式获取控制器方法中的数据。但在控制方法中调用辅助函数不知该如何传递变量 ...

你说传参?直接传不就可以吗?
 楼主| 发表于 2018-8-10 20:09:55 | 显示全部楼层
Hex 发表于 2018-8-10 00:32
你说传参?直接传不就可以吗?

是辅助函数中的参数向控制器中的方法传递,请原谅我无知。
发表于 2018-8-11 21:21:44 | 显示全部楼层
dzwlxk 发表于 2018-8-10 20:09
是辅助函数中的参数向控制器中的方法传递,请原谅我无知。

辅助函数是控制器调用的,然后辅助函数只能返回值,没法传参给控制器,因为并不是辅助函数去调用控制器。
发表于 2018-8-11 21:26:35 | 显示全部楼层
看了一下你的 get_auth 并没有什么实际作用啊?那你写这个 helper 的意义是什么?一般来说 helper 只用于视图里。你要做的是在钩子里验证权限,然后让控制器拿到验证结果吗?
 楼主| 发表于 2018-8-12 09:46:42 | 显示全部楼层
本帖最后由 dzwlxk 于 2018-8-12 09:47 编辑
Hex 发表于 2018-8-11 21:26
看了一下你的 get_auth 并没有什么实际作用啊?那你写这个 helper 的意义是什么?一般来说 helper 只用于视 ...

老大,我把我的思路给你汇报一下:
这个权限控制包是从论坛下的,它用hook判断权限,然后根据结果调用helper里的error_redirct做页面跳转。前端用的是H-ui,若没权限,它会把选项卡框架一并弹出。我准备改一下。在点击菜单时,若有权限则调用页面,没权限则只会弹出一个“无权限”的对话框,即阻止调用Hui_admin_tab(this)。
原码如下:

$(".Hui-aside").on("click",".menu_dropdown a",function(){
                var v=this;
                $.get("http://localhost/zkzdemo/index.php/adminman/get_power",function(data){
                        if(data==1){
                                console.info(data);
                                Hui_admin_tab(v);
                        }
                        else if(data==0)alert("无权限");
                });
});

data即为从后台获取的权限值,也可以说是从控制器拿到权限叛断值。不知道说清楚没有?
发表于 2018-8-12 10:11:26 | 显示全部楼层
helper里:
a{
return json;
}
control里:
echo a();
 楼主| 发表于 2018-8-12 10:47:41 | 显示全部楼层
本帖最后由 dzwlxk 于 2018-8-12 10:58 编辑
zhaohua0317 发表于 2018-8-12 10:11
helper里:
a{
return json;

hook里:
//验证ACL权限
if(!rbac_conf(array('ACL',$directory,$controller,$function))){
                redirct(0);
                die();
}
helper里:
if (! function_exists ( "redirct" )) {
        function redirct($right) {
                //error_log($right,3,"c:/errors.txt");
                return (json_encode($right));
               
        }
控制器里:
public function get_power(){
        echo redirct(?);
}
这里参数值该怎样解决?redirct()分别在hook和控制器调用过。ajax能否直接调用helper?
发表于 2018-8-13 16:21:18 | 显示全部楼层
dzwlxk 发表于 2018-8-12 10:47
hook里:
//验证ACL权限
if(!rbac_conf(array('ACL',$directory,$controller,$function))){

你在 hook 里 die() 那程序就不会往下执行了呀,正常来说你也不应该在 hook 里去中断程序,你可能需要通过判断权限,转到不同的路由上,然后不同路由返回不同的 JSON。另外,helper 是无法直接访问的,必须套一个控制器,你可以只写一个用于 helper 的控制器。

本版积分规则