HautelookAliceBundle を使おうとしたらClassNotFoundException

208 views
Skip to first unread message

田中宏典

unread,
Oct 17, 2016, 7:58:56 PM10/17/16
to 日本Symfonyユーザー会

プロジェクトのルートに HautelookAliceBundle と LiipFunctionalTestBundle をインストールし、README通りにconfig設定した後にフィクスチャを読み込もうとしたらエラーになりました。



■エラーメッセージ

Fatal error: Class 'Hautelook\AliceBundle\Alice\DataFixturesLoader' not found in /Users/tanaka/classic-symfony/src/AppBundle/DataFixtures/ORM/BlogArticleLoader.php on line 8



フィクスチャローダークラスからHautelookAliceBundleがうまく参照できていないようなエラーのようですが、どうすれば解決できるでしょうか?

なお、HautelookAliceBundleの場所をFinderで確認したら次の場所にありました。

classic-symfony/vendor/hautelook/alice-bundle



■環境

Symfony 3.1.4

PHPUnit 5.6.1

fzaninotto/faker v1.6.0

nelmio/alice 2.2.2

hautelook/alice-bundle v1.3.1

liip/functional-test-bundle 1.6.3



■フィクスチャローダークラス

classic-symfony/src/AppBundle/DataFixtures/ORM/BlogArticleLoader.php


<?php

namespace AppBundle\DataFixtures\ORM;


use Hautelook\AliceBundle\Alice\DataFixturesLoader;

use Nelmio\Alice\Fixtures;


class BlogArticleLoader extends DataFixturesLoader

{

    protected function getFixtures()

    {

        return array(

            __DIR__ . '/../../Resources/fixtures/BlogArticle.yml',

        );

    }

}



■コンソール

$ php bin/console doctrine:fixtures:load

Careful, database will be purged. Do you want to continue y/N ?y


Fatal error: Class 'Hautelook\AliceBundle\Alice\DataFixturesLoader' not found in /Users/tanaka/classic-symfony/src/AppBundle/DataFixtures/ORM/BlogArticleLoader.php on line 8


                                                                               

  [Symfony\Component\Debug\Exception\ClassNotFoundException]                   

  Attempted to load class "DataFixturesLoader" from namespace "Hautelook\Alic  

  eBundle\Alice".                                                              

  Did you forget a "use" statement for another namespace?                      



田中宏典

unread,
Oct 18, 2016, 5:32:24 AM10/18/16
to 日本Symfonyユーザー会
DataFixturesLoader の仕様が変更されているようで、存在しませんでした。

フィクスチャローダークラスでuseのパスと、extends元を変更することでエラーは発生しなくなりました。
use Hautelook\AliceBundle\Alice\DataFixturesLoader;
use Hautelook\AliceBundle\Alice\DataFixtures\Loader;

しかし、実行してもローダークラスが呼ばれないです・・・。


■コンソール

$ php bin/console doctrine:fixtures:load

Careful, database will be purged. Do you want to continue y/N ?y

  > purging database

  > loading AppBundle\DataFixtures\ORM\LoadConcertData

  > loading AppBundle\DataFixtures\ORM\LoadInquiryData



■ソース

AppBundle\DataFixtures\ORM\LoadConcertData

AppBundle\DataFixtures\ORM\LoadInquiryData
AppBundle\DataFixtures\ORM\BlogArticleLoader ※このクラスだけ呼ばれない


■フィクスチャローダークラス

<?php
namespace AppBundle\DataFixtures\ORM;

use Hautelook\AliceBundle\Alice\DataFixtures\Loader;
use Nelmio\Alice\Fixtures;

class BlogArticleLoader extends Loader

Hidenori GOTO

unread,
Oct 18, 2016, 8:53:43 AM10/18/16
to symfony-...@googlegroups.com
田中さん

後藤です

この件、書籍に記載している拡張方法は新しいバージョンに対応してなくて、お手間かけさせてしまってスミマセン。

https://github.com/hidenorigoto/symfony2-book#第9章

ここの正誤情報にて案内していましたが、AliceBundleのバージョン0.2指定でインストールし直して試して頂けるでしょうか?


---------------------------------------------------------------
後藤秀宣
hideno...@gmail.com
---------------------------------------------------------------


2016年10月18日 18:32 田中宏典 <toebisu...@gmail.com>:
> --
> --
> -------------------
> Symfonyに関する疑問・質問、ユーザー会の活動やサイトに対するご意見、その他雑談など、お気軽にMLへ投稿してください!
>
>
> 日本Symfonyユーザー会
> http://www.symfony.gr.jp/
>
> 日本Symfonyユーザー会メーリングリスト
> http://groups.google.com/group/symfony-users-ja
>
> ---
> このメールは Google グループのグループ「日本Symfonyユーザー会」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには
> symfony-users-...@googlegroups.com にメールを送信してください。
> その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

田中宏典

unread,
Oct 18, 2016, 7:24:33 PM10/18/16
to 日本Symfonyユーザー会
後藤さん、
ご返信ありがとうございます。

やはり著者の方だったんですね、ハンドルネームからつい昨日気づきました!

正誤情報も確認しておりまして、最初にAliceBundleのバージョン0.2のインストールを試みたのですが、symfony3.1.4に対応していないようでインストールに失敗しました。
また、せっかく勉強するのでSymfonyの最新バージョンで構築していきたいという思いもあります。

READMEを見る限り使い方は0.2と変わりないはずなのですが、なにか足りないのか間違っているのか・・・。
情報が少ないので四苦八苦しております^^;

田中宏典

unread,
Oct 18, 2016, 7:42:35 PM10/18/16
to 日本Symfonyユーザー会
自己解決しました。

こちらのサイトにAliceBundleの0.2から1.xへのアップグレード方法が記載されていました。

■変更点
use Hautelook\AliceBundle\Alice\DataFixturesLoader;
 ↓
use Hautelook\AliceBundle\Doctrine\DataFixtures\AbstractLoader;

class BlogArticleLoader extends DataFixturesLoader
 ↓
class BlogArticleLoader extends AbstractLoader

protected function getFixtures()
 ↓
public function getFixtures()

$ php app/console doctrine:fixtures:load

 ↓

$ php bin/console hautelook_alice:doctrine:fixtures:load


Hidenori GOTO

unread,
Oct 18, 2016, 10:09:47 PM10/18/16
to symfony-...@googlegroups.com
田中さん

後藤です

解決されたようで何よりです。

Symfony 3系で変更がある点の対応など、Amazonの方でも書いて頂いているのが田中さんかと思いますが、
もしご都合が悪くなければ、田中さんのまとめられた情報を書籍のGitHubサイトのWikiなどに掲載させていただくか、もしくは田中さんのブログ等があるようでしたらリンクを掲載するなどしたいと思います。
いかがでしょうか?



---------------------------------------------------------------
後藤秀宣
hideno...@gmail.com
---------------------------------------------------------------


2016年10月19日 8:42 田中宏典 <toebisu...@gmail.com>:

田中宏典

unread,
Oct 18, 2016, 10:31:23 PM10/18/16
to 日本Symfonyユーザー会
はい、Amazonのレビューに記載しているのも私です。
情報の転載につきまして問題ありません。
そのまま使われてもいいですし、加工されても構いません。

2点、お気をつけていただきたいことがございまして、
まず、気づいたことがあれば随時更新はしているのですが、まだ最新のレビューはAmazon側の対応待ちで反映されておりません。
それから、”見る人がわかればいい”程度の備忘録的な書き方をしていますので、MAMPのパスやPHPバージョンなど環境によって異なってくる箇所もございます。

Reply all
Reply to author
Forward
0 new messages