2012-05-11 25 views

Trả lời

7

AFAIK nó chưa khả thi (ít nhất là theo cách dễ dàng). Bạn nên sử dụng sự phản chiếu. Tôi đã viết một dịch vụ nhanh chóng và dơ bẩn để có được tên bó tên thực thể đoán/kho/tên dựa trên các quy ước của tôi. Có thể bị lỗi, hãy xem: http://pastebin.com/BzeXAduH

Chỉ hoạt động khi bạn chuyển một lớp kế thừa từ Bộ điều khiển (Symfony2). Cách sử dụng:

entity_management_guesser: 
    class: Acme\HelloBundle\Service\EntityManagementGuesser 

Trong điều khiển của bạn:

$guesser = $this->get('entity_management_guesser')->inizialize($this); 

$bundleName = $guesser->getBundleName();  // Acme/HelloBundle 
$bundleShort = $guesser->getBundleShortName(); // AcmeHelloBundle 

Một khả năng khác sẽ được sử dụng hạt nhân để có được tất cả các bó: Get a bundle name from an entity

+0

Đã 2,5 năm kể từ khi phản ứng, bất cứ ai nghe nói về bất kỳ tiến bộ nào về các câu hỏi? :) Có cách nào "sạch hơn" để tìm tên gói không? :) –

5

Vâng, bạn có thể nhận được bộ điều khiển của tuyến đường hiện tại bằng cách,

$request->attributes->get('_controller'); 

Bạn có thể phân tích cú pháp tên gói từ nó.

3

Bạn có thể lấy tên bó trong bộ điều khiển chỉ đơn giản như thế:

// Display "SybioCoreBundle" 
echo $this->getRequest()->attributes->get('_template')->get('bundle'); 

Và bên trong một mẫu Twig:

{{ app.request.get('_template').get('bundle') }} 
15

Để có được tên trong bộ điều khiển:

// Display "AcmeHelloBundle" 
echo $this->getRequest()->attributes->get('_template')->get('bundle'); 

Và bên trong một mẫu Twig:

{{ app.request.get('_template').get('bundle') }} 

Để có được tên khiển trong bộ điều khiển:

// Display "Default" 
echo $this->getRequest()->attributes->get('_template')->get('controller'); 

Và bên trong một mẫu Twig:

{{ app.request.get('_template').get('controller') }} 

Trong để có được tên hành động trong bộ điều khiển:

// Displays "index" 
echo $this->getRequest()->attributes->get('_template')->get('name'); 

Và bên trong một mẫu Twig:

{{ app.request.get('_template').get('name') }} 
+6

khá chắc chắn '-> attributes-> get ('_ template')' không khả dụng nếu bạn không sử dụng chú thích @template. –

+0

bạn có thể sử dụng '$ request-> attributes-> get ('_ controller');' hoặc '$ this-> getRequest() -> attributes-> get ('_ controller');' trong bộ điều khiển để lấy tên bộ điều khiển. –

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