Hex 发表于 2018-8-10 00:32:18

dzwlxk 发表于 2018-8-9 21:15
老大,现在已解决js通过JSON方式获取控制器方法中的数据。但在控制方法中调用辅助函数不知该如何传递变量 ...

你说传参?直接传不就可以吗?

dzwlxk 发表于 2018-8-10 20:09:55

Hex 发表于 2018-8-10 00:32
你说传参?直接传不就可以吗?

是辅助函数中的参数向控制器中的方法传递,请原谅我无知。

Hex 发表于 2018-8-11 21:21:44

dzwlxk 发表于 2018-8-10 20:09
是辅助函数中的参数向控制器中的方法传递,请原谅我无知。
辅助函数是控制器调用的,然后辅助函数只能返回值,没法传参给控制器,因为并不是辅助函数去调用控制器。

Hex 发表于 2018-8-11 21:26:35

看了一下你的 get_auth 并没有什么实际作用啊?那你写这个 helper 的意义是什么?一般来说 helper 只用于视图里。你要做的是在钩子里验证权限,然后让控制器拿到验证结果吗?

dzwlxk 发表于 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即为从后台获取的权限值,也可以说是从控制器拿到权限叛断值。不知道说清楚没有?

zhaohua0317 发表于 2018-8-12 10:11:26

helper里:
a{
return json;
}
control里:
echo a();

dzwlxk 发表于 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?

Hex 发表于 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 的控制器。
页: 1 [2]
查看完整版本: 获取函数值