Настраиваемое поле формы Symfony типа FQCN для хранения в поле базы данных - PullRequest
0 голосов
/ 05 октября 2018

Я в процессе миграции приложения Symfony 2.8 на 3.4, а затем на 4.1.Как вы знаете, ::getName() пользовательского типа поля формы устарело и было удалено в 2.8 и 3.x соответственно.Поэтому теперь необходимо указать FQCN при добавлении настраиваемого поля в форму.Проблема в том, что у нас есть таблица Settings с набором или строками, представляющими поля формы.Каждая строка этого типа в таблице БД имеет свой собственный тип поля (столбец в таблице БД).Таким образом, это выглядит так:

'4', '1', NULL, 'password_expiration', '365', 'integer', 'Period of user password expiration, in days', 'Password Expiration'
'6', '1', NULL, 'login_min_length', '3', 'integer', 'Minimum allowable login length', 'Login Minimum Length'
....
'17', '1', NULL, 'help_page', '', 'ckeditor', 'Help page content for users', 'Help page'

, где integer и ckeditor - это значения, используемые для передачи в качестве имени типа настраиваемого или собственного поля Symfony в вызов ::add() формы.

Как вы можете себе представить, оно вызывает исключение Could not load type "ckeditor": class does not exist в 3.4, потому что мне нужно как-то ссылаться на FQCN MyBundle\Form\Type\CkEditorType::class.Но даже если я обновлю значения полей базы данных на что-то вроде 'MyBundle \ Form \ Type \ CkEditorType :: class' (с явно экранированными обратными слешами, очевидно), это будет интерпретировано как строка и не будет вычислено.

Итак, вопрос в том, как сохранить FQCN в поле базы данных и интерпретировать его при визуализации формы?

...