2014-01-29 4 views
6

Ich habe einen Fehler, wenn ich eine einfache Seite öffnen möchte. Dies ist der vollständige Fehler:Abfangbarer schwerwiegender Fehler: Objekt der Klasse __PHP_Incomplete_Class konnte nicht in Zeichenfolge konvertiert werden

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

Was ich in meinem Symfony-Projekt getan haben, ist:

  • generieren Einheiten aus der Datenbank
  • Benutzer bearbeiten Entity für Sicherheit
  • bearbeiten security.yml
  • Hinzugefügt zwei datefixtures

Das ist mein User-Entity-Klasse:

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

Mein 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 } 
+0

Bitte versuchen Sie manuell "app/Cache" Cache-Verzeichnis zu löschen –

+0

Ich habe es bereits nach dem Löschen meines Cache versucht ... Aber immer noch gleichen Fehler .. – nielsv

+0

Welche Version von Symfony verwenden Sie? –

Antwort

8

in der Regel Dieser Fehler bedeutet, dass Sie versuchen, für das Objekt ohne geladenes Klassenobjekt deserialze. Also sollten Sie diese Klasse irgendwie definieren (z. B. eine Datei mit einschließen) und sie dann deserialisieren.

26

Für mich half das Löschen von Cache/Cookies im Browser. (In der Browser-Sitzung wurde die alte Version der Entität des Benutzers gespeichert).

+1

es funktioniert für mich! – xger86x

+1

Es funktionierte auch für mich :) – fmstoun

+1

Ja, es funktioniert auch für mich. Ich denke, das ist die richtige Antwort – zywj

Verwandte Themen