Làm thế nào tôi có thể phát hiện được gói nào?Cách nhận gói hiện tại trong Symfony 2?
cho ví dụ, khi tôi ở trong web.com/participants/list, tôi muốn đọc "người tham gia".
Làm thế nào tôi có thể phát hiện được gói nào?Cách nhận gói hiện tại trong Symfony 2?
cho ví dụ, khi tôi ở trong web.com/participants/list, tôi muốn đọc "người tham gia".
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
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ó.
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') }}
Để có được tên bó 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') }}
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. –
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. –
Đã 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? :) –