将网站功能分成组

时间:2015-10-10 03:32:57

标签: symfony

我正在使用symfony2,我需要将我网站的所有功能分成组,一个商店只能使用一个功能,当该功能的组由商店拥有时,用例很简单,但是当我尝试设计一种方法来做到这一点,我发现它是非常讨厌的。我最初的想法是在每个动作中检查一个组是否属于商店,实际上,每个动作都是一个功能,这意味着我必须为所有动作标记一个组,这个设计需要一个巨大的工作,你有一个更好的想法?我搜索了很多,但没有找到任何捆绑,或者像这样的任何资源,似乎这个用例非常有优势。

1 个答案:

答案 0 :(得分:1)

如果我已经很好地理解了您的问题,您需要对特定操作或一组操作进行基于角色的访问。因此,您可以开始为每组操作创建一个控制器,并使用标识相对集的前缀。

1 - 为一组操作创建控制器

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;

/**
 * @Route("/store")
 */
class StoreController extends Controller
{
    /**
     * @Route("/foo/{bar}")
     * @Method({"GET", "POST"})
     */
     public function fooAction($bar) { }
}

2 - 基于组/角色的操作集

现在您需要enable the access control来获取某些路线。举个例子:

#app/config/security.yml
  security:
  # ...

 firewalls:
     # ...
     default:
         # ...

 access_control:
     # require ROLE_STORE for /store*
     - { path: ^/store, roles: ROLE_STORE }