Не вижу ничего плохого в разных экшенах для создания и редактирваония сущности, но если очень надо то попробуйте использовать дефолтное значение в роутинге:
@Route("/{id}/edit", requirements={"id": "[1-9]\d*"}, name="edit", defaults={"id": 0})
И в экшене проверять, если пост не найден, то создавать новый.
Примечания по коду:
1) Сохранение файла на сервер стоит вынести в отдельный сервис.
2)
$em->persist($post);
в случае редактирования не требуется.
3)
$form->isSubmitted()
можно убрать, т.к. проверяется внутри
$form->isValid()