2013-04-07 7 views
6

मैं बस fosuserbundle का उपयोग करना शुरू करता हूं, आज मैं पुष्टिकरण रजिस्टर लिंक सक्रिय करता हूं। यह बहुत अच्छा काम करता है, लेकिन उपयोगकर्ता ईमेल में पुष्टिकरण लिंक पर दूसरी बार क्लिक करते हैं, वह यह है कि त्रुटि मिलती है:पुष्टि लिंक पर डबल क्लिक करते समय fosuserbundle में बग?

पुष्टि टोकन के माध्यम से उपयोगकर्ता "3hiqollkisg0s4ck4w8g0gw4soc0wwoo8ko084o4ww4sss8o4" मौजूद नहीं है 404 नहीं मिला - NotFoundHttpException

मुझे लगता है कि यह त्रुटि बंडल द्वारा संभाली जानी चाहिए, नहीं?

धन्यवाद

+0

यह एक ही समस्या हो रही है और एक समाधान की तलाश में:

अपने उपयोगकर्ता बंडल मान लिया जाये कि एक्मे \ UserBundle है। बेवकूफ उपयोगकर्ताओं के लिए कोई गुंजाइश नहीं है जो सब कुछ डबल क्लिक करें !! – gezpage

+1

इसे संभालना चाहिए, लेकिन ऐसा नहीं है। पासवर्ड अनुरोध अंतराल की समाप्ति के बाद, वही बात जब पासवर्ड पासवर्ड रीसेट करने पर डबल क्लिक करें। मेरे लिए काम करने वाली एकमात्र चीज फॉसरर को रूटिंग को 'ओवरराइड' करना है: कार्रवाई की पुष्टि करें ताकि यह मेरे द्वारा लिखी गई कार्रवाई के मार्ग हो। मूल उपयोगकर्ता बंडल नियंत्रक का मूल रूप से ओवरराइडिंग हिस्सा। मेरी कार्रवाई में मैं पुष्टिकरण हैश की जांच करता हूं, यदि मौजूद है तो मैं fosuserbundle को अग्रेषित करता हूं: पंजीकरण: पुष्टि करें। यदि नहीं - मैं कुछ संदेश गूंजता हूं। मैं बाद में कुछ कोड प्रदान कर सकता हूं। – tiriana

उत्तर

5

यहां कार्रवाई को ओवरराइड करने के लिए कोड है। असल में वास्तविक एफओएस कार्रवाई और संशोधित बस भाग लिया।

अपने उपयोगकर्ता बंडल के नियंत्रक फ़ोल्डर में एक पंजीकरणController.php फ़ाइल बनाएं और वहां पर ओवरराइडिंग पंजीकरण नियंत्रक श्रेणी डालें।

<?php 

// Acme\UserBundle\RegistrationController.php 

namespace Acme\UserBundle\Controller; 

use Symfony\Component\HttpFoundation\RedirectResponse; 
use FOS\UserBundle\Controller\RegistrationController as BaseController; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 

class RegistrationController extends BaseController 
{ 
    /** 
    * Receive the confirmation token from user email provider, login the user 
    */ 
    public function confirmAction(Request $request, $token) 
    { 
     $userManager = $this->container->get('fos_user.user_manager'); 

     $user = $userManager->findUserByConfirmationToken($token); 

     if (null === $user) { 

      /* ************************************ 
      * 
      * User with token not found. Do whatever you want here 
      * 
      * e.g. redirect to login: 
      * 
      * return new RedirectResponse($this->container->get('router')->generate('fos_user_security_login')); 
      * 
      **************************************/ 

     } 
     else{ 
      // Token found. Letting the FOSUserBundle's action handle the confirmation 
      return parent::confirmAction($request, $token); 
     } 
    } 
} 
+0

आपको अपने एप्लिकेशन के बंडल के माता-पिता को 'FOSUserBundle' बनाना होगा, [यहां देखें] (http://symfony.com/doc/master/bundles/FOSUserBundle/overriding_controllers.html) – IROEGBU

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