2016-11-25 6 views
0

У меня есть микроядро Symfony, и я пытаюсь добавить FOSUserBundle. После прохождения этого руководства, чтобы установить его https://symfony.com/doc/master/bundles/FOSUserBundle/index.html я получил ошибку с 'validor.builder'Symfony3 Вы запросили несуществующий сервис «validator.builder», а добавьте FOSUserBundle

Fatal error: Uncaught Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: You have requested a non-existent service "validator.builder". in /var/www/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerBuilder.php on line 754 

Call Stack

/app_dev.php:0 Symfony \ Component \ HttpKernel \ kernel-> ручка ( ) .../app_dev.php: 9 Symfony \ Component \ HttpKernel \ Kernel-> boot ( ) .../Kernel.php: 166 Symfony \ Component \ HttpKernel \ Kernel-> initializeContainer ( ) .. ./Kernel.php:117 Symfony \ Component \ DependencyInjection \ ContainerBuilder-> compile (0123)) .../Kernel.php: процесс 528 FOS \ UserBundle \ внедрение зависимости \ Compiler \ ValidationPass-> (: 477 Symfony \ Component \ внедрение зависимости \ Compiler \ от компилятора> компиляции ( ) .../ContainerBuilder.php ) .../Compiler.php: 104 Symfony \ Component \ внедрение зависимости \ ContainerBuilder-> getDefinition ( ) .../ValidationPass.php: 41

Это швы, что Symfony не может найти сервис валидатор. builder, который идет с symfony FrameworkBundle. У кого-нибудь есть предложения, где проблема, а что отсутствует? Спасибо!

Composer.json:

{ 
    "require": { 
     "symfony/symfony": "^3.1", 
     "symfony/security": "^3.1", 
     "symfony/monolog-bundle": "^3.0", 
     "twig/twig": "^1.28", 
     "alcaeus/mongo-php-adapter": "^1.0", 
     "ext-mongo": "*", 
     "mongodb/mongodb": "^1.0", 
     "doctrine/mongodb-odm": "^1.1", 
     "doctrine/mongodb-odm-bundle": "^3.2", 
     "friendsofsymfony/user-bundle": "[email protected]", 
     "symfony/validator": "^3.1" 
    }, 
    "autoload": { 
     "psr-4": { 
      "": "src/" 
     } 
    } } 

App_dev.php

<?php 

use Symfony\Component\HttpFoundation\Request; 

require __DIR__.'/../app/AppKernel.php'; 

$kernel = new AppKernel('dev', true); 
$request = Request::createFromGlobals(); 
$response = $kernel->handle($request); 
$response->send(); 
$kernel->terminate($request, $response); 

AppKernel.php

<?php 

use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; 
use Symfony\Component\Config\Loader\LoaderInterface; 
use Symfony\Component\DependencyInjection\ContainerBuilder; 
use Symfony\Component\HttpKernel\Kernel; 
use Symfony\Component\Routing\RouteCollectionBuilder; 

// require Composer's autoloader 
$loader = require __DIR__.'/../vendor/autoload.php'; 

class AppKernel extends Kernel 
{ 
    use MicroKernelTrait; 

    public function registerBundles() 
    { 
     $bundles = array(
      new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), 
      new Symfony\Bundle\TwigBundle\TwigBundle(), 
      new Symfony\Bundle\MonologBundle\MonologBundle(), 
      new Symfony\Bundle\SecurityBundle\SecurityBundle(), 
      new DebatesBundle\DebatesBundle(), 
      new Doctrine\Bundle\MongoDBBundle\DoctrineMongoDBBundle(), 
      new FOS\UserBundle\FOSUserBundle(), 
      new Exten\FOSUserBundle\ExtenFOSUserBundle() 
     ); 

     if ($this->getEnvironment() == 'dev') { 
      $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); 
      $bundles[] = new \Symfony\Bundle\DebugBundle\DebugBundle(); 
     } 

     return $bundles; 
    } 

    protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader) 
    { 
     $loader->load(__DIR__ . '/config/config.yml'); 
     $loader->load(__DIR__.'/config/parameters.'.$this->getEnvironment().'.yml'); 

     // configure WebProfilerBundle only if the bundle is enabled 
     if (isset($this->bundles['WebProfilerBundle'])) { 
      $c->loadFromExtension('web_profiler', array(
       'toolbar' => true, 
       'intercept_redirects' => false, 
      )); 
     } 

     $loader->load(__DIR__.'/config/services.yml'); 
    } 

    protected function configureRoutes(RouteCollectionBuilder $routes) 
    { 

     $routes->import(__DIR__ . '/../src/DebatesBundle/Routes/routes.yml', '/', 'yaml'); 
     $routes->import('@FOSUserBundle/Resources/config/routing/all.xml', '/'); 

     // import the WebProfilerRoutes, only if the bundle is enabled 
     if (isset($this->bundles['WebProfilerBundle'])) { 
      $routes->import('@WebProfilerBundle/Resources/config/routing/wdt.xml', '/_wdt'); 
      $routes->import('@WebProfilerBundle/Resources/config/routing/profiler.xml', '/_profiler'); 
     } 
    } 

    // optional, to use the standard Symfony cache directory 
    public function getCacheDir() 
    { 
     return __DIR__ . '/cache/' .$this->getEnvironment(); 
    } 

    // optional, to use the standard Symfony logs directory 
    public function getLogDir() 
    { 
     return __DIR__ . '/logs'; 
    } 
} 
+0

Какую версию Symfony вы используете? Можете ли вы опубликовать свой композитор.json? – mickadoo

+0

Я пытаюсь создать фреймворк с MicroKernel, как, например, заранее на этой странице http://symfony.com/doc/current/configuration/micro_kernel_trait.html – PVN

+0

Обновленное описание с моим файлом composer.json. – PVN

ответ

3

Крепление эр Вы сообщили, что это легко. Просто добавьте:

services: 
    validator.builder: 
    class: Symfony\Component\Config\Definition\Builder\ValidationBuilder 

К вашему services.yml

... Однако это не исправить все для меня и приводит к большему количеству проблем, связанных с отсутствующими служб аутентификации все приходящие из FOS пользователя пачке. Я потратил некоторое время, пытаясь добавить эти определения сервисов, но я думаю, что что-то не так глубоко. FOSUserBundle не имеет отмеченного релиза, который поддерживает Symfony 3. Вы можете попробовать использовать dev-master для этого в композиторе и посмотреть, как это работает, но это не исправило его для меня.

Моя рекомендация - сначала попробовать его с помощью приложения Symfony3 по умолчанию (не используя микроядро), и если это еще не решит, что вы хотите больше, Symfony3 или FOSUserBundle.

+0

благодарит за помощь, сейчас работает! – PVN

+0

Отлично, что именно это зафиксировало? – mickadoo

+0

Я пробовал по умолчанию Symfony3, там же проблема: https: //stackoverflow.com/questions/46217177/fosuser-on-symfon-3-3 (так как этот вопрос не о микроядрах, возможно, этот пост достигнет большего количества людей) – nicolallias

0

Я решил свою проблему с services.yml:

Symfony\Component\Config\Definition\Builder\ValidationBuilder: 
    autowire: true 

Согласно documentation.

Как это делается для ваших случаев?

 Смежные вопросы

  • Нет связанных вопросов^_^