2017-02-03 9 views
1

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

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": "[email protected]", 
     "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" 
    }, 

Подробности

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

Could not determine access type for property "translations".

трассирование в 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 

ответ

2

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

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

$this->translations = new ArrayCollection(); 

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

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

+0

ваш являются спасатель ❤️ – Charaf

+0

рад, что смог программирование help.Happy – Mawcel