2012-09-05 19 views
12

पर /var/www/znata.com/app/AppKernel.php में नहीं मिला, मैंने सोनाटामीडियाबंडल स्थापित करने के लिए this दस्तावेज़ का पालन किया लेकिन मुझे यह त्रुटि मिली:PHP घातक त्रुटि: क्लास 'एप्लिकेशन सोनाटा मीडियाबंडल ApplicationSonataMediaBundle' लाइन 47

PHP Fatal error: Class 'Application\Sonata\MediaBundle\ApplicationSonataMediaBundle' not found in /var/www/znata.com/app/AppKernel.php on line 47 

सोनाटा आदेश का उपयोग करने के बाद टी एप्लिकेशन उत्पन्न:

apps/Application/Sonata/MediaBundle 
:

php app/console sonata:easy-extends:generate SonataMediaBundle 

नई निर्देशिका के अंतर्गत जनरेट किया गया था

सब कुछ किया गया था, लेकिन जब मैंने अपने AppKernel.php में जेनरेट किए गए एप्लिकेशन को पंजीकृत किया तो मुझे वह त्रुटि मिली।

public function registerbundles() 
{ 
    return array(
     ... 
     new Application\Sonata\MediaBundle\ApplicationSonataMediaBundle(), 
     ... 
    ); 
} 

क्या आपको कोई समस्या है कि इस समस्या को कैसे ठीक किया जाए?

+0

क्या आप अपने बंडल के बिल्कुल सही तरीके का वर्णन कर सकते हैं? – DonCallisto

उत्तर

0
new Application\Sonata\MediaBundle\MediaBundle(), 

या

new Application\Sonata\MediaBundle\SonataMediaBundle(), 
+0

नहीं, यह काम नहीं करता है। – skonsoft

6

इस समस्या को डिबग करने के बाद, मैंने पाया कि namspace आवेदन registred नहीं है।

SF2.0 में, प्रलेखन ने कहा कि हम इस तरह नाम स्थान रजिस्टर करना चाहिए:

<?php 
$loader->registerNamespaces(array(
    ... 
    'Application' => __DIR__, 
    'Imagine'  => __DIR__.'/../vendor/imagine/lib', 
    'Gaufrette'  => __DIR__.'/../vendor/gaufrette/src', 
    'Buzz'   => __DIR__.'/../vendor/buzz/lib', 
    ... 
)); 

लेकिन SF2.1 में वे इस बारे में बात की थी।

तो मैंने autoload.php में नेमस्पेस एप्लिकेशन पंजीकृत किया और यह ठीक काम करता है।

हां, तो autoload.php इस तरह दिखेगा:

<?php 

// file: app/autoload.php 

use Doctrine\Common\Annotations\AnnotationRegistry; 
$loader = require __DIR__.'/../vendor/autoload.php'; 

//custom for Application 
$loader->add("Application", __DIR__); 


// intl 
if (!function_exists('intl_get_error_code')) { 
    require_once __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php'; 

    $loader->add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs'); 
} 

AnnotationRegistry::registerLoader(array($loader, 'loadClass')); 

return $loader; 

इस नए config सब कुछ के साथ, SF2.0 में ठीक है.पर है वे के बारे में "इमैजिन", "Guffrette" और "बज़" भी बात की थी नामस्थान। इसलिए पेराप्स, उनका उपयोग करते समय, हमें उन्हें एप्लिकेशन नेमस्पेस की तरह पंजीकृत करना चाहिए।

मुझे उम्मीद है कि यह आपकी मदद करेगा।

9

डिफ़ॉल्ट रूप से रूट रूट निर्देशिका स्वत: लोड पथ में नहीं है, केवल "src" dir। आप उपयोग कर सकते हैं

php app/console sonata:easy-extends:generate --dest=src SonataMediaBundle 

src या साधारण यह src को कॉपी में बंडल उत्पन्न करने के लिए।

0

जैसा कि स्कॉन्सॉफ्ट का उल्लेख है, आपको autoload.php में नामस्थान लोड करने की आवश्यकता है। मेरे पास FOQ.Elastica के साथ एक ही समस्या थी और निम्नलिखित को जोड़कर इसे हल किया।

$loader->add('FOQ', __DIR__.'/../vendor/bundles');

1

संगीतकार मैं composer.json में ऐसा किया का उपयोग करना: "autoload": { "psr-0": { "": "src/", "Application": "app/" } },

मैं जोड़ा मानचित्रण "आवेदन": "एप्लिकेशन /"। और फिर composer update

यह अतिरिक्त स्वत: लोडिंग की आवश्यकता उत्पन्न हुई।

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

  • कोई संबंधित समस्या नहीं^_^