Этот фрагмент кода не делает то, что я хотел.
В последних строках я устанавливаю значение для $entity, ожидая, что оно изменит значение editForm, на которое возвращается пользователь после добавления этого ручного formError.
Но я понимаю, что editForm, с которым сталкивается пользователь, — это тот же самый editForm, к которому уже был привязан предыдущий запрос (и это то, что вам нужно, поскольку другие значения могли быть изменены, значения, которые мы разрешаем изменять).
Теперь можно установить значение для editForm, например $editForm->setWidth() или что-то подобное, чтобы выполнить то, что мне нужно?
$originalEntity = clone $entity;
$editForm = $this->createForm(new ContainerType($tempCompany), $entity);
$request = $this->getRequest();
$editForm->bind($request);
//if container is a screen user is not allowed to change resolution
if ( !$entity->getIsGroup() && ( $entity->getWidth() != $originalEntity->getWidth() || $entity->getHeight() != $originalEntity->getHeight() ) ) {
$error = new FormError("Eftersom detta är en skärm och ingen grupp tillåts du inte ändra upplösningen, detta kan endast göras av cloudsign support (som konfigurerat skärmen).");
$editForm->get('width')->addError($error);
$entity->setWidth($originalEntity->getWidth());
$entity->setHeight($originalEntity->getHeight());
}