2013-01-08 89 views
0

我是Symfony 2的新手,我正在開發一個應用程序,其管理員只有登錄區域位於domain.com/admin/home/(本身是一個名爲AdminBundle的獨立軟件包),允許管理員管理產品各種軟件包的管理區域

然而,同樣的應用程序也將有一個BlogBu​​ndle,這將需要一個管理區域來管理博客文章。

解決這個問題的最佳方法是什麼?有多個管理區域的最佳實踐嗎?

爲了獲得更好的可重用性/可移植性,將博客管理部分保留在BlogBu​​ndle中是合理的,但是所有登錄設置都將出現在AdminBundle中,這似乎是錯誤的。

+1

退房的預製管理解決方案,如SonataAdmin(HTTPS之一: //github.com/sonata-project/SonataAdminBundle)或Symfony2admingenerator(這是我更喜歡的 - https://github.com/symfony2admingenerator/AdmingeneratorGeneratorBundle)。 – Mike

回答

1

執行此操作的一種方法是使用security.yml文件來保護一組路徑。例如;

access_control: 
    ... 
    - { path: ^/admin, roles: [ROLE_ADMIN] } 

然後當你創建你的動作時,你只需要給他們一個帶有管理員前綴的路由,以防止他們對除管理員以外的所有用戶。我的例子使用註釋來進行路由,但你可以用yml來做同樣的事情。

/** 
* Edit a Blog entity. 
* 
* @Route("/admin/blog/{id}/edit", name="blog_edit") 
* @Template() 
*/ 
public function editAction() 
{ 
... 

或者你也可以通過在前面的類固定在控制器中的每一個動作:

/** 
* AdminBlog controller. 
* 
* @Route("/admin/blog") 
*/ 
class AdminBlogController extends Controller 
{ 
... 

然後創建另一個控制器負責處理顯示的博客文章給最終用戶,並給他們不安全的路線。

如果你想在單獨的包,以確保其他地區你可以做到這一點通過同樣的方式已經安全和不安全的控制器/ methods.actions

+0

這正是我最終做的,這似乎是最好的方式。謝謝。 –