在"角色=ROLE_US"附近:错误:未定义'role'。



我得到这个错误

 "near 'role=ROLE_US': Error: 'role' is not defined"

我想添加一个新用户。我在sql查询中键入ROLE_USER,但仍然得到这个错误

对不起我的英语,谢谢你的帮助

defaultController.php

namespace InzRegisterBundleController;
use SensioBundleFrameworkExtraBundleConfigurationTemplate;
use InzRegisterBundleEntityUser;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use InzRegisterBundleEntityGroup;
use SymfonyBundleFrameworkBundleControllerController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentSecurityCoreSecurity;
use DoctrineCommonCollectionsArrayCollection;
class DefaultController extends Controller
{
  /**
     * @Route("/register", name="register")
     * @Template()
     */
     public function registerAction(Request $request)
    {
    $user = new User();
     $group=new Group();
  $form = $this->createFormBuilder($user)
        ->add('username', 'text')
        ->add('password', 'text')
        ->add('email', 'email')
        ->add('submit','submit')
        ->getForm();
         $form->handleRequest($request);
 if ($form->isValid()) {
 $em = $this->getDoctrine()->getManager();
   $factory = $this->get('security.encoder_factory');
   $encoder = $factory->getEncoder($user);
   $user->setSalt(md5(time()));
   $pass =   $encoder->encodePassword($form->getData()->getPassword(),          $user->getSalt());
   $user->setPassword($pass);
 $group = $em->getRepository('InzRegisterBundle:Group')->findOneByRole(array('role' =>'ROLE_USER'));
   $user->addGroup($group);   
   $em->persist($group);
   $em->persist($user);
   $em->flush();
    return $this->redirect($this->generateUrl('login'));
}
    return $this->render('InzRegisterBundle:Default:register.html.twig', array(
        'form' => $form->createView(),
    ));
}

}

user.php

    <?php
// src/Acme/UserBundle/Entity/User.php
namespace InzRegisterBundleEntity;
use SymfonyComponentSecurityCoreUserUserInterface;
use SymfonyComponentSecurityCoreUserAdvancedUserInterface;
use DoctrineCommonCollectionsArrayCollection;

use DoctrineORMMapping as ORM;
  /**
 * AcmeUserBundleEntityUser
 *
 * @ORMTable(name="User")
 * @ORMEntity(repositoryClass="InzRegisterBundleEntity   UserRepository")
 */
class User implements AdvancedUserInterface 
{
/**
 * @ORMColumn(name="id", type="integer")
 * @ORMId()
 * @ORMGeneratedValue(strategy="AUTO")
 */
private $id;
/**
 * @ORMColumn(name="username", type="string", length=25, unique=true)
 */
private $username;
/**
 * @ORMColumn(name="salt", type="string", length=40)
 */
private $salt;
/**
 * @ORMColumn(name="password", type="string", length=40)
 */
private $password;
/**
 * @ORMColumn(name="email", type="string", length=60, unique=true)
 */
private $email;
/**
 * @ORMColumn(name="isActive", type="boolean")
 */
private $isActive;
/**
 * @ORMManyToMany(targetEntity="Group", inversedBy="users")
 *
 */
private $groups;

public function __construct()
{
    $this->isActive = true;
    $this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
    $this->groups = new ArrayCollection();
}
/**
 * @inheritDoc
 */
public function getRoles()
{
  $roles = array();
foreach ($this->groups as $role) {
    $roles[] = $role->getRole();
}
    return $roles;
}

public function eraseCredentials()
{
}
public function getUsername()
{
    return $this->username;
}
public function getSalt()
{
    return $this->salt;
}
public function getPassword()
{
    return $this->password;
}
  public function isAccountNonExpired()
{
    return true;
}
public function isAccountNonLocked()
{
    return true;
}
public function isCredentialsNonExpired()
{
    return true;
}
public function isEnabled()
{
    return $this->isActive;
}

/**
 * Get id
 *
 * @return integer 
 */
public function getId()
{
    return $this->id;
}
/**
 * Set username
 *
 * @param string $username
 * @return User
 */
public function setUsername($username)
{
    $this->username = $username;
    return $this;
}
/**
 * Set salt
 *
 * @param string $salt
 * @return User
 */
public function setSalt($salt)
{
    $this->salt = $salt;
    return $this;
}
/**
 * Set password
 *
 * @param string $password
 * @return User
 */
public function setPassword($password)
{
    $this->password = $password;
    return $this;
}
/**
 * Set email
 *
 * @param string $email
 * @return User
 */
public function setEmail($email)
{
    $this->email = $email;
    return $this;
}
/**
 * Get email
 *
 * @return string 
 */
public function getEmail()
{
    return $this->email;
}
/**
 * Set isActive
 *
 * @param boolean $isActive
 * @return User
 */
public function setIsActive($isActive)
{
    $this->isActive = $isActive;
    return $this;
}
/**
 * Get isActive
 *
 * @return boolean 
 */
public function getIsActive()
{
    return $this->isActive;
}
/**
 * Add groups
 *
 * @param AcmeUserBundleEntityGroup $groups
 * @return User
 */
public function addGroup(AcmeUserBundleEntityGroup $groups)
{
    $groups->addUser($this);
    $this->groups -> add($groups);
    return $this->groups;
}
/**
 * Remove groups
 *
 * @param AcmeUserBundleEntityGroup $groups
 */
public function removeGroup(AcmeUserBundleEntityGroup $groups)
{
    $this->groups->removeElement($groups);
}
/**
 * Get groups
 *
 * @return DoctrineCommonCollectionsCollection 
 */
public function getGroups()
{
    return $this->groups;
}
/**
 * Set research
 *
 * @param AcmeUserBundleEntityResearch $research
 * @return User
 */
}

group.php

<?php
namespace InzRegisterBundleEntity;
use SymfonyComponentSecurityCoreRoleRoleInterface;
use DoctrineCommonCollectionsArrayCollection;
use DoctrineORMMapping as ORM;
 /**
 * @ORMTable(name="groups")
 * @ORMEntity(repositoryClass="InzRegisterBundleEntityGroupRepository")
 */
 class Group implements RoleInterface, Serializable
{
/**
 * @ORMColumn(name="id", type="integer")
 * @ORMId()
 * @ORMGeneratedValue(strategy="AUTO")
 */
private $id;
/** @ORMColumn(name="name", type="string", length=30) */
private $name;
/** @ORMColumn(name="role", type="string", length=20, unique=true) */
private $role;
/** @ORMManyToMany(targetEntity="User", mappedBy="groups",cascade={"persist"}) */
private $users;
public function __construct()
{
    $this->users = new ArrayCollection();
}
// ... getters and setters for each property
/** @see RoleInterface */
public function getRole()
{
    return $this->role;
}
/**
 * Get id
 *
 * @return integer 
 */
public function getId()
{
    return $this->id;
}

/**
 * @see Serializable::serialize()
 */
public function serialize()
{
    /*
     * ! Don't serialize $users field !
     */
    return json_encode(array(
        $this->id,
        $this->role
    ));
}
/**
 * @see Serializable::unserialize()
 */
public function unserialize($serialized)
{
    list(
        $this->id,
        $this->role
    ) = json_decode($serialized);
}
/**
 * Set name
 *
 * @param string $name
 * @return Group
 */
public function setName($name)
{
    $this->name = $name;
    return $this;
}
/**
 * Get name
 *
 * @return string 
 */
public function getName()
{
    return $this->name;
}
/**
 * Set role
 *
 * @param string $role
 * @return Group
 */
public function setRole($role)
{
    $this->role = $role;
    return $this;
}
/**
 * Add users
 *
 * @param AcmeUserBundleEntityUser $users
 * @return Group
 */
public function addUser(AcmeUserBundleEntityUser $users)
{
    $this->users[] = $users;
    return $this;
}
/**
 * Remove users
 *
 * @param AcmeUserBundleEntityUser $users
 */
public function removeUser(AcmeUserBundleEntityUser $users)
{
    $this->users->removeElement($users);
}
/**
 * Get users
 *
 * @return DoctrineCommonCollectionsCollection 
 */
public function getUsers()
{
    return $this->users;
}
}

groupRepository.php

<?php
// src/Acme/UserBundle/Entity/UserRepository.php
namespace InzRegisterBundleEntity;
use SymfonyComponentSecurityCoreUserUserInterface;
use SymfonyComponentSecurityCoreUserUserProviderInterface;
use SymfonyComponentSecurityCoreExceptionUsernameNotFoundException;
use SymfonyComponentSecurityCoreExceptionUnsupportedUserException;
use DoctrineORMEntityRepository;
use DoctrineORMNoResultException;
class GroupRepository extends EntityRepository 
{
public function findOneByRole($role)
{
return $this->getEntityManager()
->createQuery(
'SELECT p FROM InzRegisterBundle:Group p WHERE role=ROLE_USER'
)
->getResult();
}
}

userRepository.php

<?php
// src/Acme/UserBundle/Entity/UserRepository.php
namespace InzRegisterBundleEntity;
use SymfonyComponentSecurityCoreUserUserInterface;
use SymfonyComponentSecurityCoreUserUserProviderInterface;
use SymfonyComponentSecurityCoreExceptionUsernameNotFoundException;
use SymfonyComponentSecurityCoreExceptionUnsupportedUserException;
use DoctrineORMEntityRepository;
use DoctrineORMNoResultException;
class UserRepository extends EntityRepository implements    UserProviderInterface
{
public function loadUserByUsername($username)
{
     $q = $this
        ->createQueryBuilder('u')
        ->select('u, g')
        ->leftJoin('u.groups', 'g')
        ->where('u.username = :username OR u.email = :email')
        ->setParameter('username', $username)
        ->setParameter('email', $username)
        ->getQuery()
    ;
    try {
        // The Query::getSingleResult() method throws an exception
        // if there is no record matching the criteria.
        $user = $q->getSingleResult();
    } catch (NoResultException $e) {
        throw new UsernameNotFoundException(sprintf('Unable to find an active admin AcmeUserBundle:User object identified by "%s".', $username), null, 0, $e);
    }
    return $user;
}
public function refreshUser(UserInterface $user)
{
    $class = get_class($user);
    if (!$this->supportsClass($class)) {
        throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', $class));
    }
    return $this->loadUserByUsername($user->getUsername());
}
public function supportsClass($class)
{
    return $this->getEntityName() === $class || is_subclass_of($class, $this->getEntityName());
}
}

你能试试吗:

"SELECT p FROM InzRegisterBundle:Group p WHERE p.role='ROLE_USER'"

带参数的更新:

->createQuery(
   "SELECT p FROM InzRegisterBundle:Group p WHERE p.role=:role"
)
->setParameter('role', 'ROLE_USER')

相关内容

  • 没有找到相关文章

最新更新