繁体   English   中英

新的Symfony2用户类给出致命错误

[英]New Symfony2 User Class gives Fatal Error

我正在尝试从security.yml中的手动指定用户迁移到数据库用户。 我已经阅读了http://symfony.com/doc/current/book/security.html#loading-users-from-the-database并实现了他们的示例,然后使用朋友的用户类对其进行了扩展。 当我尝试运行php app/console doctrine:generate:entities ,出现以下错误: Class MyFreelancer\\PortalBundle\\Entity\\User contains 7 abstract methods and must therefor be declared abstract or implement the remaining methods ,然后再Class MyFreelancer\\PortalBundle\\Entity\\User contains 7 abstract methods and must therefor be declared abstract or implement the remaining methods一系列方法离开页面。

我的代码如下:

<?php
namespace MyFreelancer\PortalBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\Criteria;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints as Assert;
use JMS\Serializer\Annotation as Ser;
use Gedmo\Mapping\Annotation as Gedmo;

use Symfony\Component\Security\Core\User\Role;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * User
 *
 * @ORM\Entity
 * @ORM\Table(name="users")
 * @Ser\ExclusionPolicy("all")
 */
class User implements UserInterface, \Serializable
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @Ser\Expose
     */
    private $id;

/**
     * @var string
     *
     * @ORM\Column(name="role_id", type="integer")
     * @Assert\Range(min=1)
     */
    private $roleId;

    /**
     * @var string
     *
     * @ORM\Column(name="username", type="string", length=100)
     * @Assert\Length(min=3, max=100)
     * @Ser\Expose()
     */
    private $username;

    /**
     * @var string
     *
     * @ORM\Column(name="password", type="string", length=2048)
     * @Assert\Length(min=8, max=2048)
     */
    private $password;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=100)
     * @Assert\Length(min=3, max=100)
     * @Ser\Expose()
     */
    private $name;

    /**
     * @var string
     *
     * @ORM\Column(name="surname", type="string", length=100)
     * @Assert\Length(min=3, max=100)
     * @Ser\Expose()
     */
    private $surname;

    /**
     * @var string
     *
     * @ORM\Column(name="email", type="string", length=200)
     * @Assert\Email(checkMX=true)
     * @Ser\Expose()
     */
    private $email;

    /**
     * @var string
     *
     * @ORM\Column(name="cell", type="string", length=20, nullable=true)
     * @Assert\Length(min=10, max=20)
     * @Ser\Expose()
     */
    private $cell;

}
?>

我已经查看了Users Entity Provider中的Symfony2 Fatal错误 ,但是我不知道如果必须手动实现这些方法,这些方法中必须包含什么内容。 此外,doctine:generate:entity是否应该为您做到这一点? 如果将类声明为抽象更容易,该怎么办? 这意味着什么?

当我们在主题上时,如何将保存的用户角色保存/检索到数据库,例如(来自security.yml)

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

这实际上是第二个问题,如果这里不能回答,那么我将打开一个新主题。 感谢所有阅读此问题的人。

有关实体提供程序的食谱文章,位于http://symfony.com/doc/current/cookbook/security/entity_provider.html,显示了如何正确设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM