查找方法空数组

时间:2014-10-16 16:18:23

标签: php cakephp-2.3

我有一个带有第三方插件的应用程序来处理ACL管理,工作正常,但是我遇到了一些isAuthorized函数的问题。用户正在传递给函数,当我调试变量时,我可以看到数据集中的所有正确信息,但是当脚本执行查询查询时,它返回空。这就是事情,我正在执行查询的模型是我正在使用的插件的一部分。所以我在我的应用程序中对我的插件中的模型执行查找。对我来说这并不理想,但我正在使用一个没有专门构建应用程序的插件。为了执行查找作者添加

App::uses('User', 'AuthAcl.Model'); 

所以这个发现是可能的。现在说,我在语句的条件部分调整了一件事,因为我在字段列表中得到列'id'是SQL中的模糊错误。我开始得到这个错误,因为我在应用程序中添加了一些关系。

我说了这一切 - 因为我通过App Uses加载模型不应该能够执行这样的查找

$this->User->Find('First');

我试过了,它说我正在非对象上执行。这是该脚本的代码。我需要输入。当我在没有调试的情况下执行我的脚本时,它会锁定我的应用程序,通过读取代码并调试它,我认为这是因为find返回为空。另外请注意 - 请耐心等待 - 我没有编写此代码,而且我正处于学习理解其他开发人员代码的阶段。我正在使用CAKEPHP 2.3谢谢大家!

public function isAuthorized($user = null) {
    App::uses('User', 'AuthAcl.Model');
    App::uses('Group', 'AuthAcl.Model');

    $authFlag = false;
    $this->set('login_user',$user);
    $userModel = new User();
    $group = new Group();
    //die(debug($user));
    $rs = $this->$userModel->find('first',array('conditions'=>array('user.id' => $user['id'])));
    die(debug($rs));
    $action = 'controllers';
    if (!empty($this->plugin)){
        $action .= '/'.$this->plugin;
    }
    $action .= '/'.$this->name;
    $action .= '/'.$this->action;


    if (!empty($rs['Group'])){
        foreach ($rs['Group'] as $group){
            $authFlag = $this->Acl->check(array('Group' => array('id' => $group['id'])), $action);
            if ($authFlag == true){
                break;
            }
        }
    }
    if ($authFlag == false && !empty($user)){
        $authFlag = $this->Acl->check(array('User' => array('id' => $user['id'])), $action);
        //die(debug($authFlag));
    }

    if ($authFlag == false && !empty($user)){
        $this->redirect(array('controller' => 'accessDenied', 'action' => 'index','plugin' =>'auth_acl'));
    }

    if (!empty($user)){
        $user = $userModel->find('first',array('conditions' => array('user.id' => $user['id'])));
        $this->Session->write('auth_user',$user);

        $this->request->data['auth_plugin'] = $this->plugin;
        $this->request->data['auth_controller'] = $this->name;
        $this->request->data['auth_action'] = $this->action;
    }

    return $authFlag;
}

}

0 个答案:

没有答案