Проверка не работает с Symfony2.8

Я новичок в использовании Symfony2.8, и у меня возникла проблема с проверкой.

Вот как выглядит мой код из инъекции зависимостей -

    <?php
namespace AppBundle\DependencyInjection;

use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;

class AppExtension extends Extension
{
    public function load(array $configs, ContainerBuilder $container) {
        $r = new \ReflectionClass(get_class($this));
        $dir = dirname($r->getFileName());

        $loader = new YamlFileLoader($container, new FileLocator($dir.'/../Resources/config'));
        $loader->load('validation.yml');
    }
}

А затем я пытаюсь подтвердить, что эти два столбца уникальны. (Уникальное ограничение).

# src/AppBundle/Resources/config/validation.yml
AppBundle\Entity\StaticContent:
    constraints:
        - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity:
              fields: [build, name]

С StaticContent в Entity, и он жалуется, что не может найти StaticContent.

   nebo@localhost:/var/www/html/iclei$ php app/console doctrine:schema:update --dump-sql


  [Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]                                                                                                                               
  There is no extension able to load the configuration for "AppBundle\Entity\StaticContent" (in /var/www/html/iclei/src/AppBundle/DependencyInjection/../Resources/config/validation.yml). Looked for nam  
  espace "AppBundle\Entity\StaticContent", found none  

Что я делаю неправильно ? Также у меня внутри

app/config/config.yml 

framework:
    #esi: ~
    #translator: { fallbacks: ['%locale%'] }
    secret: '%secret%'
    router:
        resource: '%kernel.root_dir%/config/routing.yml'
        strict_requirements: ~
    form: ~
    csrf_protection: ~
    validation: { enabled: true, enable_annotations: true }

И это структура Bundle, которую мы строим. DIR / SRC / AppBundle / Resources / config / doctrine / StaticContent.orm.yml DIR / SRC / AppBundle / DependencyInjection / AppExtension.php

Это моя конфигурация доктрины:

# Doctrine Configuration
doctrine:
    dbal:
        driver: pdo_mysql
        host: '%database_host%'
        port: '%database_port%'
        dbname: '%database_name%'
        user: '%database_user%'
        password: '%database_password%'
        charset: UTF8
        # if using pdo_sqlite as your database driver:
        #   1. add the path in parameters.yml
        #     e.g. database_path: '%kernel.root_dir%/data/data.db3'
        #   2. Uncomment database_path in parameters.yml.dist
        #   3. Uncomment next line:
        #path: '%database_path%'

    orm:
        entity_managers:
            default:
                mappings:
                    AppBundle: ~
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true

По запросу I13 добавляю свою сущность.

<?php

namespace AppBundle\Entity;

/**
 * StaticContent
 */
class StaticContent
{
    /**
     * @var int
     */
    private $id;

    /**
     * @var int
     */
    private $build;

    /**
     * @var string
     */
    private $name;

    /**
     * @var string
     */
    private $type;

    /**
     * @var string
     */
    private $data;

Со своими геттерами и сеттерами.

AppBundle\Entity\StaticContent:
type: entity
table: null
repositoryClass: AppBundle\Repository\StaticContentRepository
id:
    id:
        type: integer
        id: true
        generator:
            strategy: AUTO
fields:
    name:
        type: string
        length: 255
    data:
        type: blob
manyToOne:
    build:
        targetEntity: AppBundle\Entity\Build
        inversedBy: staticContents
        joinColumn:
            name: build_id
            referencedColumnName: id
lifecycleCallbacks: {  }

Вы проверили пространство имен StaticContent, имя файла и класса (включая регистр и расширение файла), чтобы отложить сбой автозагрузки для объекта?

j-guyon 16.03.2018 15:25

пространство имен AppBundle \ Entity;

FortuneSoldier 16.03.2018 15:27

класс StaticContent

FortuneSoldier 16.03.2018 15:27

Попробуйте это: stackoverflow.com/questions/28937442/…

Jannes Botis 16.03.2018 16:44

Можете ли вы также опубликовать отображение yml? (StaticContent.orm.yml)

l13 19.03.2018 13:08

Да, я обновил вопрос.

FortuneSoldier 19.03.2018 13:22

Первое, что я вижу: почему имя вашей таблицы пустое?

l13 19.03.2018 13:41

У вас есть файл AppBundle \ DependencyInjection \ Configuration?

l13 19.03.2018 13:44

Нет, у меня нет файла AppBundle \ DependencyInjection \ Configuration.

FortuneSoldier 19.03.2018 13:45

И это построил кто-то другой в команде и наивно полагал, что это было построено правильным образом.

FortuneSoldier 19.03.2018 13:46

Но все равно не могу заставить его работать.

FortuneSoldier 19.03.2018 15:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
11
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пожалуйста, попробуйте включить пакет в конфигурации доктрины и скажите, работает ли он:

 # Doctrine Configuration
    doctrine:            
        dbal:
            driver: pdo_mysql
            host: '%database_host%'
            port: '%database_port%'
            dbname: '%database_name%'
            user: '%database_user%'
            password: '%database_password%'
            charset: UTF8
        orm:
            auto_generate_proxy_classes: "%kernel.debug%"
            entity_managers:
                default:
                    auto_mapping: true                        
                    mappings:
                        YOURBundle: ~

Изменить расширение приложения:

<?php

       namespace AppBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;


class AppExtension extends Extension {

    /**
     * {@inheritdoc}
     */
    public function load(array $configs, ContainerBuilder $container) {
        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);

        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
    }

}

Хм, я не уверен, правильно ли я вас понял. Но знайте, что это не работает, потому что он жалуется на конфигурацию orm.

FortuneSoldier 16.03.2018 15:16

[Symfony \ Component \ Config \ Definition \ Exception \ InvalidConfig‌ urationException] Нераспознанные параметры "naming_strategy, auto_mapping" в "doctrine.orm"

FortuneSoldier 16.03.2018 15:16

Ну он установлен по умолчанию.

FortuneSoldier 16.03.2018 15:22

Ой, извини. Только что я заметил, что по умолчанию используется другой цвет.

FortuneSoldier 16.03.2018 15:25

По-прежнему та же проблема.

FortuneSoldier 16.03.2018 15:32

Неужели так сложно заставить валидацию работать в Symfony2.8? Или это просто моя испорченная конфигурация?

FortuneSoldier 16.03.2018 15:34

Попробуйте удалить enabled: validation: {enable_annotations: true}

l13 19.03.2018 08:35

Вы можете показать мне свою сущность (AppBundle \ Entity \ StaticContent)?

l13 19.03.2018 08:36

Хотите продолжить обсуждение в чате? Было бы проще.

FortuneSoldier 19.03.2018 10:00

<? php namespace AppBundle \ Entity; / ** * StaticContent * / class StaticContent {

FortuneSoldier 19.03.2018 10:03

Это похоже на это? Вы что-нибудь видите?

FortuneSoldier 19.03.2018 10:03

Другие вопросы по теме