FOSuserBundle symfony 2 用户界面错误中的 DeleteUser 方法

DeleteUser method in FOSuserBundle symfony 2 Userinterface error

我在使用 $UserManager->deleteUser($user) 删除用户时遇到问题。我收到一个错误:错误:Class AppBundle\Controller\UsermanagerController 包含 35 个抽象方法,因此必须声明为抽象方法或实现其余方法。

我的控制器:

namespace AppBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use AppBundle\Entity\UserManager;
use FOS\UserBundle\Model\UserInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

class UsermanagerController extends Controller implements UserInterface
{
public function deleteAction($user){
$UserManager = $this->container->get('fos_user.user_manager');
if ($user ==  null) {
        throw new NotFoundHttpException('User not found for user ' . $user);
    }
$UserManager->deleteUser($user);
return $this->redirect($this->generateUrl('admin_index'));

}

我的实体:

namespace AppBundle/Entity;
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Doctrine\UserManager as BaseCustomer;
use FOS\UserBundle\Model\UserInterface;

/**
*@ORM|Entitiy
*
*/
class UserManager extends BaseCustomer implements UserInterface
{

}

我的config.yml: 秩序:

resolve_target_entities:
    FOS\UserBundle\Model\UserInterface: AppBundle\Entity\UserManager

和Routing.yml:

fos_deleteuser_group:
    path: /app/usermanager/delete/{user}
    defaults: { _controller: AppBundle:Usermanager:delete }

我尝试使用 FOS/UserBundle/doctrine/UserManager,没有成功。

提前感谢您的帮助。

总结一下:

您的第一个错误是控制器中的 implements UserInterface。你已经删除了它。

那么你的控制器内部还有另一个问题,因为你将一个字符串传递给 UserManager::deleteUser 方法,该方法需要一些 UserInterface

我会为您提供一些代码,应该可以解决这个问题。

<?php
/**
 * @param $username string
 * @return Response
 */
public function deleteAction($username) {
  $userManager = $this->get('fos_user.user_manager');
  /* @var $userManager UserManager */

  $user = $userManager->findUserByUsername($username);
  if(\is_null($user)) {
    // user not found, generate $notFoundResponse
    return $notFoundResponse;
  }

  \assert(!\is_null($user));
  $userManager->deleteUser($user);

  // okay, generate $okayResponse
  return $okayResponse;
}