2012-05-11 11 views

उत्तर

7

AFAIK यह अभी तक संभव नहीं है (कम से कम एक आसान तरीके से)। आपको प्रतिबिंब का उपयोग करना चाहिए। मैंने अपने सम्मेलनों के आधार पर बंडल नाम एंज अनुमान इकाई/भंडार/फॉर्म नाम प्राप्त करने के लिए एक त्वरित और गंदे सेवा लिखी। छोटी गाड़ी हो सकती है, इस पर एक नज़र डालें: http://pastebin.com/BzeXAduH

यह केवल तभी काम करता है जब आप नियंत्रक (Symfony2) से प्राप्त कक्षा को पास करते हैं। उपयोग:

entity_management_guesser: 
    class: Acme\HelloBundle\Service\EntityManagementGuesser 

अपने नियंत्रक में:

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

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

एक और संभावना गिरी का उपयोग करेंगे सभी बंडलों प्राप्त करने के लिए: Get a bundle name from an entity

+0

यह प्रतिक्रिया के बाद से 2.5 साल हो गया है, किसी को भी सवाल पर अभी तक कोई प्रगति के बारे में सुना? :) क्या बंडल नाम खोजने के लिए कोई "क्लीनर" तरीका है? :) –

5

वैसे आप से वर्तमान मार्ग के नियंत्रक प्राप्त कर सकते हैं,

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

आप इससे बंडल नाम पार्स कर सकते हैं।

3

आप नियंत्रक बस ऐसे ही में बंडल नाम प्राप्त कर सकते हैं:

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

और एक टहनी टेम्पलेट अंदर:

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

आदेश बंडल नाम पाने के लिए नियंत्रक में:

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

और एक टहनी टेम्पलेट के अंदर:

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

आदेश नियंत्रक में नियंत्रक नाम प्राप्त करने के लिए:

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

और एक टहनी टेम्पलेट के अंदर:

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

में नियंत्रक में कार्रवाई का नाम प्राप्त करने के लिए आदेश:

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

और एक टहनी टेम्पलेट के अंदर:

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

अगर आप @ टेम्पलेट एनोटेशन का उपयोग नहीं करते हैं तो '-> विशेषताएं-> प्राप्त करें (' _ टेम्पलेट ') उपलब्ध नहीं है। –

+0

आप '$ request-> विशेषताएँ-> प्राप्त करें (' _ नियंत्रक '); 'या' $ this-> getRequest() -> विशेषताएँ-> प्राप्त करें (' _ नियंत्रक '); नियंत्रक नाम को पकड़ने के लिए नियंत्रक में। –

संबंधित मुद्दे