2012-09-05 3 views
12

this docをインストールしてSonataMediaBundleをインストールしましたが、PHP致命的なエラー:クラス 'Application Sonata MediaBundle ApplicationSonataMediaBundle'が/var/www/znata.com/app/AppKernel.phpの行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は、次のようになります。SF2.0にfine.Butで、彼らは「イマジン」についても話しました。この新しい設定すべてに

<?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; 

、「Guffrette」と「バズ」名前空間。したがって、それらを使用する場合、我々はそれらをアプリケーション名前空間のようにも登録しなければなりません。

これがあなたに役立つことを願っています。

9

デフォルトでは、プロジェクトルートディレクトリは自動ロードパスにはありません。「src」ディレクトリのみです。 あなたはSRCにSRCまたは単純なコピーそれにバンドルを生成する

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

を使用することができます。

0

skonsoftが述べたように、autoload.phpに名前空間を読み込む必要があります。私はFOQ.Elasticaと同じ問題を抱え、以下を追加して解決しました。私はcomposer.jsonでこれをやった作曲使用

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

1

: "アプリ/": "autoload": { "psr-0": { "": "src/", "Application": "app/" } },

を私はマッピング "アプリケーション" を追加しました。 次に実行します。 composer update

これにより、余分な自動ロードが必要になりました。

関連する問題