В foreach
вы используете переменную $userOldlList
(примечание l
между Old
и List
), но вверху вы определяете переменную $userOldList
. Я думаю, именно поэтому вы получаете ошибку 500.
Что касается того, как сделать это более эффективно, это может заменить весь блок foreach
(только условие в if
- это новый код; внутренний блок - это копия вашего вопроса без каких-либо изменений):
if ($repositoryUserOld->find($user->getId()) {
$form->get('id')->addError(new FormError('User exists'));
return $this->render('AppBundle:MyApp:user.html.twig', array('form' => $form->createView()));
}
Кстати, изначально я просто скопировал ваш код в новый файл в PhpStorm, и он сразу выделил переменную с ошибками. Наличие инструмента, который проверяет ваш код при вводе, является отличным способом повысить производительность.