2016-01-23 169 views
0

我正在构建一个laravel包,但它不会自动加载。Laravel包不自动加载 - Laravel 5.2

这是我包的自动加载部分:

"autoload": { 
    "classmap": [ 
     "src" 
    ], 
    "psr-4": { 
     "Doitonlinemedia\\Translatableroutes\\": "src/" 
    } 
} 

类被命名空间像Doitonlinemedia\Translatableroutes

文件夹结构,如:

- vendor 
- - doitonlinemedia 
- - - translatableroutes 
- - - - composer.json 
- - - - src 
- - - - - class1.php 

我已在应用程序中的ServiceProvider。 php like: Doitonlinemedia\Translatableroutes\TranslatableRoutesServiceProvider::class

但它口口声声说类 'Doitonlinemedia \ Translatableroutes \ TranslatableRoutesServiceProvider' 未找到

运行composer dump-autoload上的每一个变化。

我在做什么错?

编辑

对于开发我说:"Doitonlinemedia\\Translatableroutes\\": "packages/doitonlinemedia/translatableroutes/src"到主composer.json文件。但是当我需要这个作曲家包进入一个新项目时,我会遇到上述问题。

要尝试这个包:https://github.com/doitonlinemedia/TranslatableRoutes,并按照指示

回答

3

PHP命名空间是区分大小写的。 你必须把这个到您的composer.json

"psr-4": { 
    "Doitonlinemedia\\Translatableroutes\\": "src/" 
} 

,而不是这个

"psr-4": { 
    "doitonlinemedia\\translatableroutes\\": "src/" 
} 

对我来说,它的工作原理也没有classmap选项

运行composer dump-autoload再次重试。

编辑

这对我的作品

{ 
    "name": "doitonlinemedia/translatableroutes", 
    "description": "Create translatable resource routes", 
    "authors": [ 
     { 
      "name": "Tim van Uum", 
      "email": "[email protected]" 
     } 
    ], 
    "minimum-stability": "stable", 
    "license": "MIT", 
    "require": { 
     "php": ">=5.3.0" 
    }, 
    "autoload": { 
     "classmap": [ 
      "src" 
     ], 
     "psr-4": { 
      "Doitonlinemedia\\Translatableroutes\\": "src/" 
     } 
    } 
} 

此外,您应该这个包添加到您的要求"illuminate/support": "~5.2"

注意:作曲家似乎不刷新位于供应商包中的composer.json文件的自动载入条目,如果它们没有更新。

编辑之后,您必须将其推送到您的存储库。在您的项目中重新安装软件包。

如果您仍在积极开发您的软件包,我建议您按照以下说明设置环境:Developing your packages in Laravel 5

无需重新安装或更新远程存储库,您就可以轻松开发软件包。

+0

试过已经有同样的错误。我在这里疯了! –

+0

如果你想尝试一下:https://github.com/doitonlinemedia/TranslatableRoutes –

+0

@TimvanUum在这里我更新的答案。 – Fiete