2015-10-28 5 views
3

Я создал пакет с symfony 2.3, но в этом случае (потому что мой учитель спросил меня) за пределами папки src/, поэтому у меня есть ../symfony/fuentes/NameBundle вместо ../symfony/src/NameBundle. Новая линия появляется в AppKernel и на routing.yml появляется мой новый пакет, но когда я пытаюсь запустить серверСоздание пакета снаружи src/

Bundle generation 

Generating the bundle code: OK 
Checking that the bundle is autoloaded: FAILED 
Confirm automatic update of your Kernel [yes]? 
Enabling the bundle inside the Kernel: OK 
Confirm automatic update of the Routing [yes]? 
Importing the bundle routing resource: OK 

The command was not able to configure everything automatically. 
You must do the following changes manually. 

- Edit the composer.json file and register the bundle 
    namespace in the "autoload" section: 

У меня есть редактировать автозагрузку и пробовал много вещей (ищет здесь), но появляется та же ошибка всегда.

C:\Users\Akenateb\Documents\UOC\AULAMENTOR\Symfony>php app/console server:run 127.0.0.1:8080 
PHP Fatal error: Class 'AulaMentor\ExdosBundle\AulaMentorExdosBundle' not found in C:\Users\Akenateb\Documents\UOC\AULAMENTOR\Symfony\app\AppKernel.php on line 20 

Может кто-нибудь мне помочь? Я действительно застрял в этом. Спасибо заранее.

+0

Почему бы он спросить что-то подобное? –

+0

Кажется, что вы используете команду app/console generate: bundle command? – Cerad

+0

i.am.michiel - потому что я занимаюсь фитнесом –

ответ

2

Прежде всего я хочу, чтобы благодаря людям, которые уже ответили. Вот что нам нужно сделать, если мы хотим создать пакет за пределами 'src' папки, например, в 'fuentes'> '..Symfony/fuentes'.

Если у вас есть создать с «произвести: узелок» Я предлагаю вам принять, когда генератор спросит вас, если вы хотите создать полную структуру, если у вас есть создать пакет с шагом генератором Гота 3.

1- Убедитесь, что вы зарегистрировали сверток AppKernel и Она существует там линия как это:

нового YourProject \ NameprojectBundle \ YourProjectNameprojectBundle(),

-Убедитесь, что вы добавить маршрут к вашему приложению/конфигурациям/routing и 'routing.yml' имеет новый набор ro Ют, как это (вы можете добавить префикс к вашему URL, в этом случае Фуэнтес):

your_project_name:
ресурс: "@ YourProjectNameprojectBundle/Ресурсы/конфигурации/routing.yml"
префикс:/Фуэнтес

3- Редактируем 'приложение/autoload.php' и мы добавим эту строку:

$ Loader-> добавить (. 'YourProject', Realpath (__ DIR __ '/ ../Фуэнтес'));

Наконец, мы можем обновлять активы делать с командной строкой: PHP приложения/консольными активы: установить веб

Надеется, что это помогает кому-то.
С наилучшими пожеланиями.

+0

С недавними версиями Symfony параметр -shared должен быть добавлен при использовании команды «generate: bundle». – forsberg

1

ли точно так, как сказано в комментарии:

Edit the composer.json file and register the bundle namespace in the "autoload" section 

Папка src автоматически загружаются с помощью PSR конвенции. Если вы устанавливаете классы вне папки src, они также должны быть объявлены.

+0

i.am.michiel - Я уже пробовал (конечно) редактирование symfony/composer.json Это не работает 4me, на самом деле я пробовал так много всего, но это не устраняет эту проблему. Вы сказали: «Их тоже нужно объявить». Хорошо, но как? –

0

В файле composer.json вы можете добавить еще один элемент в раздел autoload. Вот пример того, что я думаю, что будет работать для вашего случая использования:

"autoload": { 
    "psr-0": { 
     "NameBundle\\": "fuentes/", 
     "": "src/" 
    } 
}, 
0

Вот как добавить просто еще один комплект за пределами вашего проекта Symfony, когда мы не хотим испортить файл composer.json.

2 первые точки такие же, как в ответе Майкла Дж. Теперь к 3-му пункту:

Скажем, нам нужно добавить Ourcompany/SomeBundle, проживающих в другом проекте, относительный путь ../../OtherProject/src/OurCompany/SomeBundle к CurrentProject/app реж.

Таким образом, мы добавить этот пакет приложения CurrentProject таким образом:

$loader->add('OurCompany\\SomeBundle', realpath(__DIR__.'/../../OtherProject/src')); 

Пожалуйста, обратите внимание, как следует использовать косые и слэш (остальные/или \ в конце не имеет значения, он достаточно умен, чтобы понять это).

И для всего пространства имен для загрузки (все пучки пространств имен в другом проекте, доступные в CurrentProject):

$loader->add('OurCompany', realpath(__DIR__.'/../../OtherProject/src')); 
Смежные вопросы