2012-07-20 15 views
5

के साथ "उपयोगकर्ता को रीफ्रेश नहीं कर सकता" त्रुटि प्राप्त करना मेरे पास क्लास उपयोगकर्ता बेस क्लास के रूप में है, तो मैंने उपयोगकर्ता वर्ग से शिक्षक को बढ़ाया।symfony2 और सिद्धांत

जब मैं कोशिश मैं इस त्रुटि

आप EntityUserProvider एक पहचानकर्ता वाले करता है कि से एक उपयोगकर्ता को ताज़ा नहीं कर सकते हैं पाने के लिए लॉग इन करने के लिए। उपयोगकर्ता ऑब्जेक्ट को सिद्धांत द्वारा मैप किए गए स्वयं पहचानकर्ता के साथ क्रमबद्ध किया जाना है।

मैं के रूप में मैं सामना किया है कि FOSUserbundle

public function serialize() 
    { 
     return serialize(array(
      $this->password, 
      $this->salt, 
      $this->usernameCanonical, 
      $this->username, 
      $this->expired, 
      $this->locked, 
      $this->credentialsExpired, 
      $this->enabled, 
     )); 
    } 

से मैं मैं कहाँ त्रुटि के लिए जाँच कर सकते हैं खोजने के लिए सक्षम नहीं हूँ user.php में serialize/deserialize समारोह है। मैं फँस गया हूँ। कृपया

उत्तर

4

codeEntityUserProvider.php से ऐसा लगता है कि आपको उपयोगकर्ता के id को क्रमबद्ध करना होगा।

6
"You cannot refresh a user from the EntityUserProvider that does not contain an identifier. The user object has to be serialized with its own identifier mapped by Doctrine." 

इस सवाल का जवाब नहीं है, लेकिन किसी को (जैसे मैंने किया था) के ऊपर त्रुटि संदेश googles अगर यह शीर्ष हिट है। और जब से मैंने अपना समाधान पाया, मैंने सोचा कि मैं साझा करूंगा।

यदि आप डेटाबेस से वर्तमान उपयोगकर्ता को हटाते हैं और फिर उपयोगकर्ता को रीडायरेक्ट करने का प्रयास करते हैं तो आपको यह त्रुटि मिल जाएगी। (जो एक मूर्खतापूर्ण गलती की तरह लग सकता है, लेकिन त्रुटि संदेश निश्चित रूप से मदद नहीं कर रहा है!) समाधान आपको रीडायरेक्ट करने से पहले सत्र को साफ़ करना है।

$this->get('security.context')->setToken(null); 
$this->get('request')->getSession()->invalidate(); 
+0

धन्यवाद! मुझे वह सही समस्या थी; हटाए गए उपयोगकर्ता इकाई और लॉगिन पृष्ठ पर पुनः निर्देशित करने का प्रयास किया और उपरोक्त त्रुटि प्राप्त की। त्रुटि संदेश और voila गुगल! यहाँ लैंडेड! आप प्रयास कर रहे हैं मुझे एक टन और अधिक बचाया। –

+1

ध्यान दें: सिम्फनी 2.6+ के लिए आपको '$ this-> get ('security.token_storage') का उपयोग करना होगा। – hchr

0

बस एक ही मुद्दा class table inheritance का उपयोग कर, यह private को id संपत्ति सेट पर दृश्यता की वजह से किया गया था, तो बच्चे को कक्षा आईडी उपयोग नहीं कर सका, protected को यह बदल रहा है इसे हल।

संबंधित मुद्दे