Незначительно новое для Symfony2; Теперь я использую FOSUserBundle в качестве моего userprovider. Так как он не обеспечивает контроллер для стирания и действий, я писал мой собственный:Symfony2: FOSUserBundle Удалить ошибку действия
/**
* Delete user
*
* @param integer $id
*
* @Route("/delete/{id}")
*
* @return RedirectResponse
*/
public function deleteAction($id)
{
$em = $this->getDoctrine()->getManager();
$um = $this->get('fos_user.user_manager');
$user = $um->findUserBy(array(
'id' => $id
)
);
$em->remove($user);
$em->flush();
return new RedirectResponse("star9988_user_user_index");
}
И добавил ссылку на пути от моего шаблона:
<a href="{{ path('star9988_user_user_delete', {'id': user.id}) }}">
я первоначально пытался пропусканием ObjectManager в , запрос объекта User по идентификатору, а затем удаление этого с помощью метода deleteUser, но по какой-то причине он не позволит мне получить ObjectManager с использованием обычного метода впрыска конструктора.
В результате я прибегал к вызову EntityManager и вызывая метод remove() для моего объекта $ user.
Результат очень странный: когда я проверяю свою базу данных с помощью SequelPro, я замечаю, что указанный пользовательский объект действительно удален. Однако браузер возвращает эту ошибку:
EntityManager#remove() expects parameter 1 to be an entity object, NULL given.
Любая помощь будет очень признательна.
EDIT:
I have changed my code to the following:
/**
* Delete user
*
* @param integer $id
*
* @Route("/delete/{id}")
*
* @return RedirectResponse
*/
public function deleteAction($id)
{
$em = $this->getDoctrine()->getManager();
/** @var \Star9988\ModelBundle\Entity\User $user */
$user = $this->getDoctrine()->getRepository('ModelBundle:User')->find($id);
$em->remove($user);
$em->flush();
return new RedirectResponse("star9988_user_user_index");
}
Как ни странно, я получаю тот же результат: объект удаляется из базы данных.
Похоже, что мой маршрут не пропускает параметр по какой-либо причине.
DEBUG - SELECT t0.username AS username1, t0.username_canonical AS username_canonical2, t0.email AS email3, t0.email_canonical AS email_canonical4, t0.enabled AS enabled5, t0.salt AS salt6, t0.password AS password7, t0.last_login AS last_login8, t0.locked AS locked9, t0.expired AS expired10, t0.expires_at AS expires_at11, t0.confirmation_token AS confirmation_token12, t0.password_requested_at AS password_requested_at13, t0.roles AS roles14, t0.credentials_expired AS credentials_expired15, t0.credentials_expire_at AS credentials_expire_at16, t0.id AS id17, t0.FirstName AS FirstName18, t0.LastName AS LastName19, t0.creditLimit AS creditLimit20, t0.creditAvailable AS creditAvailable21, t0.accountBalance AS accountBalance22, t0.rebate AS rebate23, t0.parent AS parent24 FROM StarUsers t0 WHERE t0.id = ? LIMIT 1
FOSUserBundle поставляется с менеджером пользователя https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Doctrine/UserManager.php#L49, он позволяет вам выполнять все это: https://github.com/ FriendsOfSymfony/FOSUserBundle/BLOB/Master/Ресурсы/док/user_manager.md –