Не удалось определить тип доступа для переводов свойств в Symfony 3.2.* с административным проектом Sonata и пакетом перевода Sonata.

Я установил административный проект Sonata в версии Symfony 3.2.*. Компоненты, которые используются в моем проекте из файла composer.json, следующие:

Фрагмент пакета файла composer.json

"require": {
        "php": ">=5.5.9",
        "ext-pdo_sqlite": "*",
        "a2lix/i18n-doctrine-bundle": "^0.1.0",
        "a2lix/translation-form-bundle": "^2.1",
        "doctrine/doctrine-bundle": "^1.6",
        "doctrine/doctrine-cache-bundle": "^1.2",
        "doctrine/doctrine-fixtures-bundle": "^2.2",
        "doctrine/orm": "^2.5",
        "erusev/parsedown": "^1.5",
        "ezyang/htmlpurifier": "^4.7",
        "friendsofsymfony/user-bundle": "~2.0@dev",
        "incenteev/composer-parameter-handler": "^2.0",
        "sensio/distribution-bundle": "^5.0",
        "sensio/framework-extra-bundle": "^3.0.2",
        "sonata-project/admin-bundle": "^3.12",
        "sonata-project/doctrine-orm-admin-bundle": "^3.1",
        "sonata-project/translation-bundle": "^2.1",
        "stof/doctrine-extensions-bundle": "^1.2",
        "symfony/monolog-bundle": "^3.0",
        "symfony/polyfill-apcu": "^1.0",
        "symfony/property-access": "^3.2",
        "symfony/swiftmailer-bundle": "^2.3",
        "symfony/symfony": "^3.2",
        "twig/extensions": "^1.3",
        "twig/twig": "^1.28",
        "white-october/pagerfanta-bundle": "^1.0"
    },
    "require-dev": {
        "friendsofphp/php-cs-fixer"            : "^1.12",
        "phpunit/phpunit"                      : "^4.8 || ^5.0",
        "sensio/generator-bundle"              : "^3.0",
        "symfony/phpunit-bridge"               : "^3.0"
    },

Подробности

Я использую пакет перевода. Итак, в моей форме для каждого поля у меня есть поля для двух языков. Форма отлично отображается с многоязычными опциями. Но когда я отправляю форму, я получаю следующую ошибку:

Не удалось определить тип доступа для свойства "переводы".

Трассировка стека в vendor\symfony\symfony\src\Symfony\Component\PropertyAccess\PropertyAccessor.php в строке 649

} elseif (self::ACCESS_TYPE_MAGIC === $access[self::ACCESS_TYPE]) {
        $object->{$access[self::ACCESS_NAME]}($value);
    } elseif (self::ACCESS_TYPE_NOT_FOUND === $access[self::ACCESS_TYPE]) {
        throw new NoSuchPropertyException(sprintf('Could not determine access type for property "%s".', $property));
    } else {
        throw new NoSuchPropertyException($access[self::ACCESS_NAME]);
    }

Окружающая обстановка

Пакеты Соната

$ composer show sonata-project/*
sonata-project/admin-bundle              3.12.0 The missing Symfony Admin ...
sonata-project/block-bundle              3.3.0  Symfony SonataBlockBundle
sonata-project/cache                     1.0.7  Cache library
sonata-project/core-bundle               3.2.0  Symfony SonataCoreBundle
sonata-project/doctrine-orm-admin-bundle 3.1.3  Symfony Sonata / Integrate...
sonata-project/exporter                  1.7.0  Lightweight Exporter library
sonata-project/translation-bundle        2.1.0  SonataTranslationBundle

Пакеты Symfony

$ composer show symfony/*
symfony/monolog-bundle     3.0.1  Symfony MonologBundle
symfony/phpunit-bridge     v3.2.1 Symfony PHPUnit Bridge
symfony/polyfill-apcu      v1.3.0 Symfony polyfill backporting apcu_* func...
symfony/polyfill-intl-icu  v1.3.0 Symfony polyfill for intl's ICU-related ...
symfony/polyfill-mbstring  v1.3.0 Symfony polyfill for the Mbstring extension
symfony/polyfill-php56     v1.3.0 Symfony polyfill backporting some PHP 5....
symfony/polyfill-php70     v1.3.0 Symfony polyfill backporting some PHP 7....
symfony/polyfill-util      v1.3.0 Symfony utilities for portability of PHP...
symfony/security-acl       v3.0.0 Symfony Security Component - ACL (Access...
symfony/swiftmailer-bundle v2.4.2 Symfony SwiftmailerBundle
symfony/symfony            v3.2.2 The Symfony PHP framework

PHP-версия

$ php -v
# $ php -v
PHP 5.6.20 (cli) (built: Mar 31 2016 14:56:44)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

person Nikunj Kabariya    schedule 03.02.2017    source источник


Ответы (2)


В большинстве случаев эта ошибка возникает, когда вы забываете инициализировать коллекцию в конструкторе вашего класса сущностей.

Посмотрите на свой класс сущности. Вам нужно добавить

 $this->translations = new ArrayCollection();

к конструктору.

В более общем плане PropertyAccess отвечает за вызов сеттеров/геттеров вашего объекта, поэтому обычно это проблема, связанная с вашим классом объекта, а не с вашим типом формы.

person Mawcel    schedule 03.02.2017
comment
ты спасатель ❤️ - person Charaf; 03.03.2017
comment
Рад, что смог помочь. Приятного программирования - person Mawcel; 03.03.2017

Я разработал многоязычное веб-приложение в symfony 3.2. * Демонстрационный URL-адрес, который я развил: A2Lix-Multilingual-Translatable-Symfony3

person Nikunj Kabariya    schedule 14.02.2017