0

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されます。その後、ページから外れるメソッドのリストが表示されます。

私のコードは次のとおりです。

<?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;

}
?>

Symfony2 Fatal error in Users Entity Providerを見てきましたが、手動で実装する必要がある場合、これらのメソッドに何を入れなければならないかわかりません。また、doctine:generate:entities はそれを行うべきではありませんか? クラスを抽象として宣言する方が簡単な場合は、どうすればよいですか? それは何を伴いますか?

このトピックに取り組んでいる間、(security.yml から) などのデータベースに保存ユーザー ロールを保存/取得するにはどうすればよいですか?

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

これは実際には 2 番目の質問です。ここで回答できない場合は、新しいトピックを開きます。この質問を読んでくださった皆様、ありがとうございます。

4

1 に答える 1

1

http://symfony.com/doc/current/cookbook/security/entity_provider.htmlにあるエンティティ プロバイダーに関するクックブックの記事には、これを正しく設定する方法が示されています。

于 2013-10-30T20:07:43.110 に答える