Удалить элементы из запроса перед обработкой формы

Я создаю простой CRUD для управления пользователями одного приложения. Пользователи создаются и управляются FOSUserBundle, Кроме того, я не позволяю никому редактировать / изменять username и email поэтому я не показываю эти поля в редактируемой форме. Это код, с которым я занимаюсь редактированием:

// Create the form and set the right data
public function editAction($id)
{
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('UserBundle:User')->find($id);

$form = $this->createForm(new UserType(), $user, array(
'action' => $this->generateUrl('update-user', array('id' => $id)),
'method' => 'POST',
));

return array(
'form' => $form->createView(),
'user' => $user
);
}

// Perform the update action and do the rest of the logic
public function updateAction(Request $request, $id = NULL)
{
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository("UserBundle:User")->find($id);

$form = $this->createForm(new UserType(), $user);
$form->handleRequest($request);

$response = array();
$response['status'] = TRUE;

if ($form->isValid())
{
$userManager = $this->container->get('fos_user.user_manager');
$userManager->updateUser($user);
$response['message'] = $this->get('translator')->trans('update.success', array('%element%' => 'el usuario'));
}
else
{
$response['message'] = $this->get('translator')->trans('update.fail', array('%element%' => 'el usuario'));
$response['error'] = $this->getFormErrors($form);
$this->get('ladybug')->log($response['error']);
$response['status'] = FALSE;
}

return new JsonResponse($response);
}

Но с тех пор username а также email поля отсутствуют и каким-то образом они попадают в действие обновления, где эти поля обновляются пустыми значениями. Единственное, что я могу подумать, чтобы решить эту проблему, это удалить эти параметры из запроса перед выполнением handleRequest но я понятия не имею, как, любая помощь?

PS: Любые идеи лучше моих или любые предложения по коду приветствуются !!

1-й тест

Я думал, что проблема заключается в fos_user.user_manager, Зачем? Взгляните на это:

// Unset non editable fields from $request
unset(
$request->get('user')['username'], $request->get('user')['email']
);

// Continue the flow
$form->handleRequest($request);

Но на удивление это выдает эту «странную» ошибку:

Возникла исключительная ситуация при выполнении ‘UPDATE fos_user SET username =
?, username_canonical =?, email =?, email_canonical =?, пароль =
?, role = ?, updatedAt =? ГДЕ id =? ‘ с параметрами [null, null,
ноль ноль,
«TD9GEdMpFT3j75fPeoEkus00ge + xmrgQhaXntNstz7taSx4KAdqpKGhxfC3czHaNr17pGfrigylT29iyTfcZNA ==»,
«a: 1: {i: 0; s: 16: \» ROLE_PROFILE_TWO \ «;}», «2014-09-13 21:01:10», 4]:

Что приводит к этому:

SQLSTATE [23000]: нарушение ограничения целостности: 1062 Повторяющаяся запись
» для ключа ‘UNIQ_957A647992FC23A8’

Проблема в этом? username уникален и, я пока не знаю почему, все еще пытаюсь установить username а также email с пустыми значениями, вызывающими ошибку выше.

Какие-либо предложения?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]