问题描述
|
对不起,我真傻。我正在遵循一个教程,将管理路由添加到我想作为学习练习创建的cakePHP应用程序中。
本教程的解释不够好(我认为我只是一个真正的初学者),我听不懂以下内容,有人可以用英语告诉我这里发生了什么。
public function isAuthorized() {
$role = $this->Auth->user(\'role\');
$neededRole = null;
$prefix = !empty($this->params[\'prefix\']) ? $this->params[\'prefix\'] : null;
if (!empty($prefix) && in_array($prefix,Configure::read(\'Routing.prefixes\'))) {
$neededRole = $prefix;
}
return (empty($neededRole) || strcasecmp($role,\'admin\') == 0 || strcasecmp($role,$neededRole) == 0);
}
解决方法
你在哪里探测???
你可以一一调试
// This method provides information of role about the currently authenticated user.
$role = $this->Auth->user(\'role\');
// you first check with var_dump($this->params[\'prefix\']) and see the result
/*
* this line use ternary operator,its say $this->params[\'prefix\'] is not empty
* then set $prefix = $this->params[\'prefix\'] otherwise set $prefix=null
*/
$prefix = !empty($this->params[\'prefix\']) ? $this->params[\'prefix\'] : null;
/*
*Now check the array
*echo \"<pre>\";
* print_r(Configure::read(\'Routing.prefixes\'));
* echo \"</pre>\";
* now below line said if `$prefix` is not empty then search that `$prefix`
* value in this array `Configure::read(\'Routing.prefixes\')` and if it
* exist in the array then set `$neededRole = $prefix;
*/
if (!empty($prefix) && in_array($prefix,Configure::read(\'Routing.prefixes\'))) {
$neededRole = $prefix;
}
/* below line say say that if $role == admin then return $role or return $neededRole */
return (empty($neededRole) || strcasecmp($role,\'admin\') == 0 || strcasecmp($role,$neededRole)
参考
in_array
三元运算符
乐意效劳 :)
,public function isAuthorized() {
//获取当前用户的角色(管理员,用户,编辑者,访问者等)。
$ role = $ this-> Auth-> user(\'role \');
//分配一个空值
$ neededRole = null;
//获取前缀的参数,并分配给$ prefix,如果找不到,则分配null
$ prefix =!empty($ this-> params [\'prefix \'])吗? $ this-> params [\'prefix \']:null;
//如果$ prefix不为null&如果$ prefix配置了路由,则将$ prefix分配给$ neededRole
如果(!empty($ prefix)&& in_array($ prefix,Configure :: read(\'Routing.prefixes \'))){
$ neededRole = $ prefix;
}
return(empty($ neededRole)|| strcasecmp($ role,\'admin \')== 0 || strcasecmp($ role,$ neededRole)== 0);
}
//其余的我不太确定。