2012-04-21 9 views
7

मैंSymfony2: कोर टेम्पलेट को ओवरराइड करने के लिए कैसे?

\app\Resources\SensioGeneratorBundle\skeleton\crud\views\index.html.twig 

बनाकर SymfonyGeneratorBundle टेम्पलेट्स ओवरराइड करने के लिए उस फ़ाइल को प्रतिस्थापित करना चाहिए कोशिश कर रहा हूँ:

\vendor\bundles\Sensio\Bundle\GeneratorBundle\Resources\skeleton\crud\views\index.html.twig 

लेकिन यह अभी भी cache:clear. के बाद भी मूल फ़ाइल का उपयोग करता है कैसे करना है कि डब्ल्यू/जैसे नए बंडल बनाने ओ Can't override the standard skeleton views in Symfony2 GeneratorBundle?

+0

क्या यह इसके बजाय "index.html.twig.twig" एक्सटेंशन नहीं होना चाहिए? डबल "टहन" नोट करें। http://symfony.com/doc/current/bundles/SensioGeneratorBundle/index.html – DevWL

उत्तर

14

सही app/AppKernel.php उदा .:

// app/AppKernel.php 

if (in_array($this->getEnvironment(), array('dev', 'test'))) { 
    //..... 
    $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); 
    $bundles[] = new Namespace\YourBundle(); 
} 

// Or outside if, should you want your bundle to be available in production environment 
$bundles[] = new Namespace\YourBundle(); 

में SensioGeneratorBundle के बाद फिर YourBundle.php ओवरराइड registerCommands विधि में अपने बंडल रजिस्टर,

// Bundle\YourBundle.php 

// other declarations 
use Symfony\Component\Console\Application; 
use Sensio\Bundle\GeneratorBundle\Generator\DoctrineCrudGenerator; 
use Symfony\Component\Filesystem\Filesystem; 


public function registerCommands(Application $application){ 
    $crudCommand = $application->get('generate:doctrine:crud'); 
    $generator = new DoctrineCrudGenerator(new FileSystem, __DIR__.'/Resources/skeleton/crud'); 
    $crudCommand->setGenerator($generator); 

    parent::registerCommands($application); 
} 

आप YourBundle\Resource को skeleton फ़ोल्डर की प्रतिलिपि और टेम्पलेट्स को संशोधित करने के लिए है।

+0

मैंने बिल्कुल किया और यह त्रुटि संदेश प्राप्त किया: [Twig_Error_Loader] "सी: \ wamp \ apps \ rerent \ src \ Rent \ प्रोग्रामबंडल /../ संसाधन/कंकाल/क्रूड "निर्देशिका मौजूद नहीं है। मुझे लगता है कि यह ऐप/फ़ोल्डर के बजाय बंडल से पढ़ने की कोशिश करता है। मदद? – Zeljko

+0

आपको इस दृष्टिकोण की एक चेतावनी बताने के लिए भूल गए हैं, आपको कंकाल फ़ोल्डर को अपने प्रोग्रामबंडल में कॉपी करना होगा। इसके अलावा '../' की आवश्यकता नहीं है। संपादित कोड –

+0

क्या यह काम किया? –

0

m2mdas का जवाब मेरे लिए काम किया है, लेकिन केवल पता चलने पर कि यह फ़ाइल सिस्टम के बजाय

फ़ाइल पढ़ना चाहिए के बाद!

इसे सत्यापित करने के लिए अपने विक्रेताओं/सिम्फनी /.../ फाइल सिस्टम फ़ोल्डर पर नज़र डालें। निर्देशिका के लिए

vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle/Resources/skeleton/crud/views/edit.html.twig.twig 

:

11

संपादित टेम्पलेट उदाहरण के लिए 2.3+ संस्करण में फ़ाइल को ओवरराइड करने के लिए, कॉपी

app/Resources/SensioGeneratorBundle/skeleton/crud/views/edit.html.twig.twig 

अब, बस डिफ़ॉल्ट कमांड के साथ crud पैदा करते हैं और यह नए टेम्पलेट का उपयोग करेगा।

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