Symfony 2.8: при попытке зарегистрировать пользовательский пакет в AppKernel выдает исключение ClassNotFoundException - PullRequest
0 голосов
/ 27 ноября 2018

Я начал работать с Symfony и пытался добавить пакет многократного использования.Чтобы добиться этого, я сделал следующее: 1.did генерация приложения / консоли: bundle , вот вывод консоли

Bundle namespace: Wyzen/DocumentUploader
 The namespace must end with Bundle. 
Bundle namespace: Wyzen/DocumentUploaderBundle

In your code, a bundle is often referenced by its name. It can be the
concatenation of all namespace parts but it's really up to you to come
up with a unique name (a good practice is to start with the vendor name).
Based on the namespace, we suggest WyzenDocumentUploaderBundle.

Bundle name [WyzenDocumentUploaderBundle]: WyzenDocumentUploaderBundle

Bundles are usually generated into the src/ directory. Unless you're
doing something custom, hit enter to keep this default!

Target Directory [src/]: vendor/

What format do you want to use for your generated configuration?

Configuration format (annotation, yml, xml, php) [xml]: yml


  Bundle generation  


> Generating a sample bundle skeleton into vendor/Wyzen/DocumentUploaderBundle OK!
> Checking that the bundle is autoloaded: FAILED
> Enabling the bundle inside app/AppKernel.php: OK
> Importing the bundle's routes from the app/config/routing.yml file: OK

Затем я создал композитор json внутри корня пакета со следующим содержимым:

{
    "name": "wyzen/wyzen-document-uploader",
    "description": "A test bundle",
    "type": "library",
    "version":"dev-master",
    "source": {
        "url": "https://github.com/xyz/wyzen-document-uploader",
        "type": "git",
        "reference": "master"
    },
    "autoload": {
        "psr-0": {
            "Wyzen\\DocumentUploaderBundle\\": ""
        }
    },
    "target-dir": "Wyzen/wyzen-document-uploader",
    "authors": [
        {
            "name": "xyz",
            "email": "xyz@xyz.com"
        }
    ],
    "require": {}
}

Теперь после успешной установки этого пакета в другом приложении с помощью composer.

Я добавил следующую строку, чтобы зарегистрировать свой пакет в AppKernel.php

new Wyzen\DocumentUploaderBundle\WyzenDocumentUploaderBundle()

, при котором он генерирует исключение

ClassNotFoundException в строке AppKernel.php 40: Попытка загрузить класс "WyzenDocumentUploaderBundle" из пространства имен "Wyzen \ DocumentUploaderBundle".Вы забыли оператор use для другого пространства имен?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Наконец-то решили проблему, добавив classmap под деревом автозагрузки к json-компоновщику и передав путь к каталогу классов в основном проекте.

 "classmap": [
        "vendor/wyzen/wyzen-document-uploader"
 ]
0 голосов
/ 27 ноября 2018

Все, что вы описываете, верно.Я устанавливаю ваш пакет, и он работает.

$ composer require wyzen/wyzen-document-uploader
Using version dev-master for wyzen/wyzen-document-uploader     
...          
Package operations: 1 install, 0 updates, 0 removals
  - Installing wyzen/wyzen-document-uploader (dev-master master): Cloning master from cache

Проверка

$ composer info -i
...
wyzen/wyzen-document-uploader        dev-master master A test bundle

Регистрация пакета

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = [
            // ...
            new Wyzen\DocumentUploaderBundle\WyzenDocumentUploaderBundle(),
        ]

Проверка

php bin/console debug:config WyzenDocumentUploaderBundle

Current configuration for "WyzenDocumentUploaderBundle"
=======================================================

wyzen_document_uploader: {  }

Исправитьваша проблема, попробуйте перестроить автозагрузчик:

composer run-script post-update-cmd

или попробуйте заново установить

...