Я хочу создать формы с использованием только методов getter в объекте... Так как я работаю над уже существующей базой данных, которая не требует хранения или манипулирования данными.
Следовательно, я создал объекты для продуктов только с методами Getter и без метода Setter.
Однако, когда я создаю форму (например, поисковый запрос с некоторыми выпадающими списками и т.д.), Он всегда ищет методы set или Add. Есть ли возможность, если я могу использовать только геттеры для получения данных из базы данных.
И я не хочу, чтобы данные были изменены в любое время в будущем.
я попытался с "read_only", но он все еще дает ошибку об установщике и addMethod()
http://symfony.com/doc/current/reference/forms/types/form.html#read-only
РЕДАКТИРОВАТЬ:
Я хочу создать раскрывающийся список ProductGroupcategory-> productSubcategory → Продукт
например (предварительный поиск): http://www.buycarspares.co.uk/
Полный код:
Да, вы можете, хотя некоторые люди могут считать решение хуже, чем проблема. Конечно, вы можете просто объявить свойства своей сущности общедоступными. Это позволит избежать не только сеттеров, но и геттеров. Функция Doctrine 2 lazy loading не будет работать.
Более продвинутый подход заключается в понимании того, что компонент формы использует объект доступа к объекту для передачи данных в и из вашего объекта. Именно там появляются сообщения "добавить" и "установить". Объекты доступа к объектам также позволяют использовать массивы, а также объекты. http://symfony.com/doc/current/components/property_access/introduction.html
Компонент формы позволяет подключить свой собственный объект доступа к объекту, что означает, что вы можете создать свой собственный объект доступа, который может напрямую записываться в частные/защищенные переменные с помощью Reflection. Это, кстати, та же техника, что и Doctrine 2 для гидратации ваших сущностей с использованием информации о базе данных.
Конечно, я уже слышу вопль протеста этого подхода в основном о нарушении инкапсуляции. Но подумайте об этом на мгновение перед голосованием. Компонент формы действительно просто сохраняется и возвращает состояние объекта в и из html-документа. Именно то, что делает Доктрина 2. Пока вы не злоупотребляете техникой, тогда нет нарушения.
Я обычно использую этот подход, чтобы не писать бесконечные геттеры и сеттеры. Кажется, на практике работает нормально.
Отношения требуют add- и get-методы просто потому, что речь идет о массиве или массивеCollection объекта, а не о геттерах или сеттерах для обычных свойств сущности, таких как строки.