2016-03-03 2 views
0

Я хочу создать readonly скрытое поле. Теперь у меня есть поле, которое выглядит следующим образом:Как избежать записи данных из формы symfony?

$builder 
     ->add('question_category_id', HiddenType::class); 

И компания имеет метод:

public function getQuestionCategoryId() { 
    return $this->getQuestion()->getQuestionCategory()->getId(); 
} 

После сохранения я получил следующую ошибку:

Neither the property "question_category_id" nor one of the methods "addQuestionCategoryId()"/"removeQuestionCategoryId()", "setQuestionCategoryId()", "questionCategoryId()", "__set()" or "__call()" exist and have public access in class "Entity\UnitQuestionAnswer".

Я мог бы добавить фиктивный метод

public function setQuestionCategoryId($id) { 
    return $this; 
} 

но не правильный способ.

Как создать скрытое поле только для чтения или избежать записи данных извне в сущность?

+0

Что вы пытаетесь сделать с откровенно скрытым полем? –

+0

@JaredFarrish, чтобы упорядочить вопросы по категориям в шаблоне. – sectus

+1

Возможный дубликат [Проверка форм symfony2 с дополнительными полями] (http://stackoverflow.com/questions/10868859/validating-symfony2-forms-with-extra-fields) –

ответ

0

S2.8 имеет атрибут read_only, который будет делать то, что вы хотите, но он был удален в версии 3.0.

Отключенный атрибут должен работать. Просто имейте в виду, что сама ценность фактически не будет отправлена ​​symfony.com/doc/current/reference/forms/types/..., поэтому, если вы делаете что-то напуганное с опубликованными данными, это может быть проблемой.

Я полагаю, что можно обмануть внутренность, но это будет больше проблем, чем того стоит.

Лично, учитывая, что мой метод get был добавлен только для формы, я бы просто добавил соответствующий метод набора и перешел.

+0

@ RyanVincent, да, клиент может изменять значения отключенных полей, но отключенные значения не отправляются обратно на сервер. И это значение будет использоваться только для визуализации формы с использованием настраиваемого шаблона. – sectus

+0

@sectus - просто помните, что пользователь мог бы отключить его и опубликовать значение, которое, в свою очередь, вызовет сообщение, не найденное множеством. Если клиенту действительно не нужно значение, то его не отправлять. Ваш шаблон ветки может вытащить его из объекта данных. – Cerad

Смежные вопросы