Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不带前缀方法的CakePHP ACL_Php_Methods_Routes_Acl_Cakephp 2.0 - Fatal编程技术网

不带前缀方法的CakePHP ACL

不带前缀方法的CakePHP ACL,php,methods,routes,acl,cakephp-2.0,Php,Methods,Routes,Acl,Cakephp 2.0,在用CakePHP开发应用程序时,我得出的结论是,在使用诸如admin、版主等前缀时,会有大量冗余数据 在谷歌上搜索了一下,我找到了zuha-3的回复 在我们的应用程序中,我们保留了前缀路由,但去掉了方法路由。 所以我们仍然得到$this->params->params['prefix'],但是路由用户 转到index()方法,而不是admin\u index()方法。那么我们 完全由ACL决定您的角色是否具有访问权限 到索引函数。这使我们可以去掉50%的视图 文件和50%的控制器方法 对于我们

在用CakePHP开发应用程序时,我得出的结论是,在使用诸如admin、版主等前缀时,会有大量冗余数据

在谷歌上搜索了一下,我找到了zuha-3的回复

在我们的应用程序中,我们保留了前缀路由,但去掉了方法路由。 所以我们仍然得到
$this->params->params['prefix']
,但是路由用户 转到
index()
方法,而不是
admin\u index()
方法。那么我们 完全由ACL决定您的角色是否具有访问权限 到索引函数。这使我们可以去掉50%的视图 文件和50%的控制器方法

对于我们分配的不同用户角色,我们可以有不同的视图 查看用户角色的前缀。所以我们可以有一个管理员视图,以及所有 管理员用户角色的用户将看到 /Posts/View/Posts/admin/index.ctp而不是 /Posts/View/Posts/index.ctp当且仅当admin视图存在时。我们 可以为管理者、用户等做同样的事情,并让他们自己决定 每个应用程序都可以决定经理是查看管理员视图还是 经理视图或来宾视图

所以这会去掉很多冗余的方法


有没有人在这篇文章中发表了一些后续文章,或者提供了一些有用的信息。

您应该能够创建如下路线:

Router::connect('/admin/users/index', array('admin' => false, 'controller' => 'users', 'action' => 'index'));
然后需要index.ctp视图,而不是admin_index.ctp视图。但我不太清楚为什么这会给你的应用程序增加任何东西。管理员视图通常有其自己的特定功能(例如,一旦用户的权限得到验证,就授予添加/删除用户的权限),因此应与“常规”视图分开。(否则,你会看到管理验证逻辑非常混乱的视图,这实际上不是一个MVC应用程序,这些东西属于一个控制器。)

编辑:根据您下面的评论,我将从您的mod方法呈现admin视图,并设置一些标志,以确定它们可以做什么和不能做什么/看到什么。例如:

function mod_index() {
    $this->set('can_edit_users', 1);
    $this->set('can_delete_users', 0);

    // User admin_index view, rather then looking for mod_index view
    $this->render('admin_index');
}

然后在您的视图中添加简单的检查,以确定哪些链接/信息可以看到,哪些不可以看到。

例如,我有管理员和版主,他们的权限几乎是相互同步的,但不是创建两个具有完全相同逻辑的方法是多余的。如果您需要提交更改,情况也会变得更糟。视图可能完全不同。我想我只是想要两者中最好的…根据你的评论编辑答案。是的,我可以看到如何为索引页工作。甚至确定要显示或不显示哪些链接也是一个好主意。但是在控制器中有两个(或更多)方法处理相同的事情时,仍然存在同样的问题。但通过反复思考,这些变化需要更多的核心工作。。。我认为这个想法是这样的:example.com/prefix/controller/action>将映射到controller::prefix_action,并带有视图前缀_action.ctp。但是如果可以检查这个方法是否存在,而不是使用默认映射,那么就使用另一个,都是自主的?如果你担心的是这些方法,您仍然可以使用路由将/mod/action路由到/admin/action,然后使用类似$this->params->url的内容来确定是否使用/admin或/mod访问您的方法。是的,这也是可能的,我会尝试一下!谢谢你的帮助