[英]Catchable Fatal Error: Object of class __PHP_Incomplete_Class could not be converted to string
I'm having an error when I want to open a simple page. 我想打开一个简单的页面时遇到错误。 This is the full error: 这是完整的错误:
ContextErrorException: Catchable Fatal Error: Object of class __PHP_Incomplete_Class could not be converted to string in /Applications/mampstack-5.4.20-0/apache2/htdocs/engelsvandenbroecke/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Token/AbstractToken.php line 70 ContextErrorException:Catchable Fatal Error:类__PHP_Incomplete_Class的对象无法转换为/Applications/mampstack-5.4.20-0/apache2/htdocs/engelsvandenbroecke/vendor/symfony/symfony/src/Symfony/Component/Security/Core/ Authentication / Token / AbstractToken.php第70行
What I've done in my symfony project is: 我在symfony项目中所做的是:
This is my User Entity Class: 这是我的用户实体类:
<?php
namespace Beachteam\BeachteamBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
/**
* User
*
* @ORM\Table(name="user", uniqueConstraints={@ORM\UniqueConstraint(name="username_UNIQUE", columns={"username"})}, indexes={@ORM\Index(name="fk_users_roles_idx", columns={"role_id"})})
* @ORM\Entity
*/
class User implements AdvancedUserInterface
{
/**
* @var string
*
* @ORM\Column(name="username", type="string", length=45, nullable=false)
*/
private $username;
/**
* @var string
*
* @ORM\Column(name="password", type="string", length=60, nullable=false)
*/
private $password;
/**
* @var string
*
* @ORM\Column(name="salt", type="string", length=30, nullable=false)
*/
private $salt;
/**
* @var string
*
* @ORM\Column(name="firstname", type="string", length=45, nullable=false)
*/
private $firstname;
/**
* @var string
*
* @ORM\Column(name="surname", type="string", length=45, nullable=false)
*/
private $surname;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=255, nullable=false)
*/
private $email;
/**
* @var string
*
* @ORM\Column(name="token", type="string", length=45, nullable=true)
*/
private $token;
/**
* @var \DateTime
*
* @ORM\Column(name="created", type="datetime", nullable=false)
*/
private $created;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var \Beachteam\BeachteamBundle\Entity\Role
*
* @ORM\ManyToOne(targetEntity="Beachteam\BeachteamBundle\Entity\Role")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="role_id", referencedColumnName="id")
* })
*/
private $role;
private $plainPassword;
/**
* Constructor
*/
public function __construct()
{
$this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
}
/**
* Set username
*
* @param string $username
* @return User
*/
public function setUsername($username)
{
$this->username = $username;
return $this;
}
/**
* Get username
*
* @return string
*/
public function getUsername()
{
return $this->username;
}
/**
* Set password
*
* @param string $password
* @return User
*/
public function setPassword($password)
{
$this->password = $password;
return $this;
}
/**
* Get password
*
* @return string
*/
public function getPassword()
{
return $this->password;
}
/**
* Set salt
*
* @param string $salt
* @return User
*/
public function setSalt($salt)
{
$this->salt = $salt;
return $this;
}
/**
* Get salt
*
* @return string
*/
public function getSalt()
{
return $this->salt;
}
/**
* Set firstname
*
* @param string $firstname
* @return User
*/
public function setFirstname($firstname)
{
$this->firstname = $firstname;
return $this;
}
/**
* Get firstname
*
* @return string
*/
public function getFirstname()
{
return $this->firstname;
}
/**
* Set surname
*
* @param string $surname
* @return User
*/
public function setSurname($surname)
{
$this->surname = $surname;
return $this;
}
/**
* Get surname
*
* @return string
*/
public function getSurname()
{
return $this->surname;
}
/**
* 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 token
*
* @param string $token
* @return User
*/
public function setToken($token)
{
$this->token = $token;
return $this;
}
/**
* Get token
*
* @return string
*/
public function getToken()
{
return $this->token;
}
/**
* Set created
*
* @param \DateTime $created
* @return User
*/
public function setCreated($created)
{
$this->created = $created;
return $this;
}
/**
* Get created
*
* @return \DateTime
*/
public function getCreated()
{
return $this->created;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set role
*
* @param \Beachteam\BeachteamBundle\Entity\Role $role
* @return User
*/
public function setRoles(\Beachteam\BeachteamBundle\Entity\Role $role = null)
{
$this->role = $role;
return $this;
}
/**
* Get role
*
* @return \Beachteam\BeachteamBundle\Entity\Role
*/
public function getRoles()
{
return array($this->role->getName());
}
public function eraseCredentials()
{
$this->setPlainPassword(null);
}
public function getPlainPassword()
{
return $this->plainPassword;
}
public function setPlainPassword($plainPassword)
{
$this->plainPassword = $plainPassword;
}
/**
* Implementation of AdvancedUserInterface method
*
* @return boolean
*/
public function isAccountNonExpired()
{
return true;
}
/**
* Implementation of AdvancedUserInterface method
*
* @return boolean
*/
public function isAccountNonLocked()
{
return true;
}
/**
* Implementation of AdvancedUserInterface method
*
* @return boolean
*/
public function isCredentialsNonExpired()
{
return true;
}
/**
* Implementation of AdvancedUserInterface method
*
* @return boolean
*/
public function isEnabled()
{
return true;
}
}
My security.yml: 我的security.yml:
security:
encoders:
Beachteam\BeachteamBundle\Entity\User:
algorithm: bcrypt
cost: 15
role_hierarchy:
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
users:
entity:
class: BeachteamBundle:User
property: username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
secured_area:
pattern: ^/
anonymous: ~
form_login:
login_path: beach_team_loginpage
check_path: beach_team_logincheck
username_parameter: login[username]
password_parameter: login[password]
always_use_default_target_path: true
default_target_path: beach_team_adminpage
logout:
path: beach_team_logout
target: beach_team_loginpage
remember_me:
key: "%secret%"
lifetime: 31536000 # 365 days in seconds
path: /
domain: ~ # Defaults to the current domain from $_SERVER
remember_me_parameter: remember
access_control:
#- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
For me help'd clearing cache/cookies in browser. 对我来说,帮助清除浏览器中的缓存/ cookie。 (in browsers session was stored old version of user's entity). (在浏览器会话中存储了旧版本的用户实体)。
This error usually means that you try to deserialze object without loaded class for that object. 此错误通常意味着您尝试反序列化对象而不加载该对象的类。 So you should somehow define this class (eg including file with it) and then deserialize it. 所以你应该以某种方式定义这个类(例如包含它的文件),然后反序列化它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.