7

私はsymfony 2.3フレームワークを使用しており、オートローダーはファイルを見つけたと主張していますが、クラスはありません:

RuntimeException: The autoloader expected class "Sensio\Bundle\
FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter" 
to be defined in file "/home/na/auth/vendor/sensio/framework-extra-bundle/
Sensio/Bundle/FrameworkExtraBundle/Request/ParamConverter/
DateTimeParamConverter.php". The file was found but the class was not in it, 
the class name or namespace probably has a typo.

これが参照しているファイルを以下に示します。

<?php

/*
 * This file is part of the Symfony framework.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * This source file is subject to the MIT license that is bundled
 * with this source code in the file LICENSE.
 */

namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use DateTime;

/**
 * Convert DateTime instances from request attribute variable.
 *
 * @author Benjamin Eberlei <kontakt@beberlei.de>
 */
class DateTimeParamConverter implements ParamConverterInterface
{
    /**
     * @{inheritdoc}
     * 
     * @throws NotFoundHttpException When invalid date given
     */
    public function apply(Request $request, ConfigurationInterface $configuration)
    {
        $param = $configuration->getName();

        if (!$request->attributes->has($param)) {
            return false;
        }

        $options = $configuration->getOptions();
        $value   = $request->attributes->get($param);

        $date = isset($options['format'])
            ? DateTime::createFromFormat($options['format'], $value)
            : new DateTime($value);

        if (!$date) {
            throw new NotFoundHttpException('Invalid date given.');
        }

        $request->attributes->set($param, $date);

        return true;
    }

    /**
     * @{inheritdoc}
     */
    public function supports(ConfigurationInterface $configuration)
    {
        if (null === $configuration->getClass()) {
            return false;
        }

        return "DateTime" === $configuration->getClass();
    }
}

とにかく、役立つかもしれない詳細は、最近Doctrineをインストールしてコマンドを実行したことです...

 2028  php app/console doctrine:schema:create
 2029  php app/console doctrine:generate:entities Auth

これらのコマンドの後、symfony は動作を停止しました。これが奇妙なバグなのか何かなのかわかりません。さらに情報が必要な場合は、投稿できます。助けてくれてありがとう。

4

11 に答える 11

2

他の誰かがこの問題を抱えていて、キャッシュをクリアしても問題が解決しない場合は、コンポーザーの依存関係を含むフォルダー全体を削除し、 を再実行することをお勧めしますcomposer install

それは私のために働いた:)。

于 2015-09-29T13:24:06.580 に答える
0

使用しようとしているクラスで名前空間が定義されていることを確認してください。たとえば、私のコントローラーには次のものがありました。

use Acme\DemoBundle\Amazon\AmazonProductAPI;

これは私の AmazonProductAPI クラスへの正しいパスでしたが、適切な名前空間をクラスに追加するまで、システムはそれを認識しませんでした:

namespace Acme\DemoBundle\Amazon;
于 2015-05-23T22:42:32.567 に答える
0

\次のように前に余分なものを削除して、この問題を解決Doctrineしました。

 <entity repository-class="ACC\Bundle\MGLBundle\\\Doctrine\ORM\PersonRepository" 
         name="ACC\Bundle\MGLBundle\Entity\Person" >`

ユーティリティを使用generate:doctrine:entityして、エンティティとorm.xmlファイルを作成しました。\このユーティリティにはバグがあるようで、上記のように xml ファイルにエクストラが追加されます。この余分なバックスラッシュを削除する\と、問題が解決しました。orm.xmlそのため、コマンドを使用した後にファイルをチェックしてphp app/console doctrine:generate:entity、パスに余分なバックスラッシュがないことを確認してください。このバグは Symfony の新しいバージョンで解決されている可能性がありますが、念のためにこのエラーが発生した場合は、これが原因である可能性があります。

于 2016-03-21T17:12:43.953 に答える
0

Symfony2 にバグがあると思います。彼らは最近、symfony の新しいバージョン (2.3.1) に更新しました。とにかく、エラーを取り除くために、AppKernel.php ファイルの //new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle() 行をコメントアウトする必要がありました。

于 2013-06-12T05:34:06.690 に答える
0

私の場合、それはクラス名のタイプミスでした。AssetsCommand.phpクラス名が次のように命名されたときにエラーが発生しましたAsssetsCommand

クラス ファイルのベース名がクラス名と同じであることを確認してください。

于 2017-01-18T19:34:31.597 に答える