Это странное поведение, свидетелем которого я был сегодня, и я удивляюсь, почему .. Я сразу перейду к делу:
Поэтому мы используем переводы a2lix с symfony и fosasticabundle
class Class
{
use Translatable;
}
class ClassTranslation implements \A2lix\I18nDoctrineBundle\Doctrine\Interfaces\OneLocaleInterface
{
use Translation;
}
В этом сценарии однажды я бегу
php app / console fos :astica: заполнить
Я получаю:
[InvalidArgumentException] Параметр ‘locale’ не имеет
существовать.
Но параметр на самом деле находится в признаке (от поставщика, который включает в себя 2 признака переводимых методов и переводимых свойств)
Вопрос в том, почему это происходит. У нас есть свойство из признака, но когда мы запускаем команду, оно не находит его.
Хорошо, теперь вот странная часть!
В этом сценарии все работает как ожидалось:
class Class
{
use Translatable;
}
class ClassTranslation
{
use Translation;
}
Если я решу не реализовывать интерфейс, команда будет работать гладко, интерфейс просто заставит вас получить метод getter и setter для атрибута locale. Мне просто интересно, почему это происходит.
Это может относится к https://github.com/a2lix/I18nDoctrineBundle/issues/16.
Я не думаю, что это связано с особенностями php, поскольку не будет InvalidArgumentException. Возможно, код черты не выполняется, если интерфейс отсутствует, поэтому в этом случае ошибки нет. Пожалуйста, проверьте реализацию вашей черты, возможно, сделайте некоторые выходные данные отладки, чтобы увидеть, когда код выполняется и когда происходит исключение.
Других решений пока нет …