2017-06-16 18 views
5

Tôi đang sử dụng Symfony 3 và tôi đã tạo một lớp Cử tri tùy chỉnh.Cách sử dụng hằng số lớp trong chú giải @Security bằng Ngôn ngữ biểu thức Symfony?

Tôi muốn truy cập bằng cách sử dụng thẻ SensioFrameworkExtraBundle@Security.

Đó là loại tác phẩm.

Nếu tôi làm như sau nó hoạt động hoàn hảo:

/** 
* @Rest\Get("organisation/{id}") 
* @Security("is_granted('OrgAdmin', id)") 
* @param int  $id 
* @param Request $request 
* 
* @return View 
*/ 
public function getOrganisationAction($id, Request $request) 
{ 

Nhưng tôi không thích ý tưởng sử dụng dây ma thuật trong việc áp dụng và tôi nhiều thà sử dụng một lớp liên tục cho việc kiểm tra.

Something như thế này:

/** 
* @Rest\Get("organisation/{id}") 
* @Security("is_granted(AppBundle\OrgRoles::ROLE_ADMIN, id)") 
* @param int  $id 
* @param Request $request 
* 
* @return View 
*/ 
public function getOrganisationAction($id, Request $request) 
{ 

Nhưng khi tôi cố gắng mà tôi nhận được thông báo lỗi sau:

Unexpected character \"\\\" around position 20 for expression `is_granted(AppBundle\\OrgRoles::ROLE_ADMIN, id)`. 

nào khi không thoát ra, như sau:

Unexpected character "\" around position 20 for expression `is_granted(AppBundle\OrgRoles::ROLE_ADMIN, id)`. 

Vì vậy, Tôi đang bối rối về điều này.

Có thể thực hiện được không?

Bất kỳ đề xuất nào về cách tốt hơn để thực hiện việc này?

Trả lời

6

Bạn có thể sử dụng chức năng constant() sẵn trong phần Expression Language:

@Security("is_granted(constant('\\Full\\Namespace\\To\\OrgRoles::ROLE_ADMIN'), id)") 
+0

Cảm ơn. Điều đó đã hiệu quả! Bạn là một huyền thoại. – Jayd

+0

Bạn được chào đón @Jayd! Hãy nhớ chấp nhận câu trả lời :-) –

+0

Sẽ làm. Đang đợi bộ hẹn giờ trên SO để cho phép tôi chấp nhận câu trả lời. : D – Jayd

Các vấn đề liên quan