我在我的项目中使用symfony2,我有一个实体员工,其中包含emlpolyee的所有信息以及用于登录其会话的用户名和密码。我想为员工创建一个安全的身份验证但是当我查看FOS Userbundle和SonataUserBundle的文档时,我发现我应该创建一个包含新用户名和密码的新实体USER。但我想使用存储在我的实体员工中的用户名和密码。这是我的实体: employee.php
class employee
{
private $codeEmployee;
//////
private $username;
private $password;
public function getCodeEmployee()
{
return $this->codeEmployee;
}
/////
public function setusername($username)
{
$this->username = $username;
return $this;
}
public function getusername()
{
return $this->username;
}
public function setPassword($password)
{
$this->password = $password;
return $this;
}
public function getPassword()
{
return $this->password;
}
////////
}
怎么做??
答案 0 :(得分:0)
official documentation解释了执行此操作的程序。
您的Employee类必须扩展基本User类:
<?php
namespace Foo\BarBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="employees")
*/
class Employee extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=255)
*/
protected $codeEmployee;
// Optional
public function __construct()
{
parent::__construct();
// your own logic
}
public function getCodeEmployee()
{
return $this->codeEmployee;
}
public function setCodeEmployee($codeEmployee)
{
$this->codeEmployee = $codeEmployee;
return $this;
}
}
不要忘记配置FOSUserBundle来选择您的用户类:
# app/config/config.yml
fos_user:
db_driver: orm
firewall_name: main
user_class: Foo\BarBundle\Entity\Employee
其余配置(security.yml文件,FOSUserBundle路由文件和其他要启动的命令)解释为documentation。
documentation还解释了如何扩展User实体并覆盖表单。