5

Windows で symfony を使用しており、公式ドキュメントに記載されているように FOSUserBundle を構成しようとしました。

スキーマを更新しようとすると、次のエラーが発生します。

Class 'FOS\UserBundle\FOSUserBundle' not found in app/AppKernel.php line 20;

問題を検索し、この解決策を見つけます:これをautoload.phpに追加します

$loader->registerNamespaces(array(
    //all the rest
    'FOS' => $vendor_dir . '/bundles',
));

しかし、それは言う別のエラーを返します

call to undefined method ...\ClassLoader::RegisterNamespace() in ...\autoload.php on line 13

誰か教えてくれませんか?:|

これは私の appkernel.php ファイルです:

<?php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Bundle\SecurityBundle\SecurityBundle(),
            new Symfony\Bundle\TwigBundle\TwigBundle(),
            new Symfony\Bundle\MonologBundle\MonologBundle(),
            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
            new Symfony\Bundle\AsseticBundle\AsseticBundle(),
            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
            new Sad\Bundle\WarehouseBundle\SadWarehouseBundle(),
            new FOS\UserBundle\FOSUserBundle(),
        );

       if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            $bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
            $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
            $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
            $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
        }

        return $bundles;
    }

    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
    }
}
4

3 に答える 3

5

私も同じ問題を抱えていました。FOSUserBundle が正しくインストールされていないことがわかりました。/vendor/friendsofsymfony/ディレクトリを削除してから、次を使用してバンドルを更新する必要があります。

php composer.phar update friendsofsymfony/user-bundle

それは私のために働いた。同じ問題を抱えている他の誰かに役立つことを願っています。

于 2014-04-07T20:54:35.963 に答える
2

Alright, there seems to be nothing wrong with your code.

Before we can get on the workarounds, let's try to reinstall your bundle, through the following steps:

  • Remove that $loader->registerNamespaces(...) thing you added to autoloader.php.
  • Run php composer.phar self-update to update composer.
  • Remove the line use FOS\UserBundle\FOSUserBundle(), from AppKernel.php.
  • Run php composer.phar update to update all your bundles.
  • Clear your cache, running php app/console cache:clear.
  • Add the line use FOS\UserBundle\FOSUserBundle(), to AppKernel.php again.

Those should do it. If you still can't use the bundle and you need the workaround (which I wouldn't advice), this is the way to go:

Open app/autoload.php. Right after $loader = require __DIR__ . '/../vendor/autoload.php. add the following:

//Loads FOSUserBundle
$loader->add('FOS', __DIR__.'/../vendor/friendsofsymfony/user-bundle/FOS');

Again, this should fix the issue and yet is not the correct way to do things. Your bundle should be working.

于 2013-07-30T13:13:19.947 に答える