2013-04-07 25 views
6

Sadece fosuserbundle kullanmaya başladım, bugün onay kaydı bağlantısını etkinleştiriyorum. O inşaat büyük, ancak kullanıcı e-postadaki onay bağlantısını ikinci kez tıklarsanız, o hatayı alıyorum:Onay bağlantısına çift tıklandığında fosuserbundle ile karşılaşın mı?

onay jetonu kullanıcı "3hiqollkisg0s4ck4w8g0gw4soc0wwoo8ko084o4ww4sss8o4" Not Found 404 yok - NotFoundHttpException

Bu hatanın paket tarafından ele alınması gerektiğini düşünüyorum, değil mi?

Teşekkür

+0

bu aynı sorunu yaşıyorsunuz ve bir çözüm arıyorsanız: Kullanıcı paket varsayarsak

Acme \ UserBundle olduğunu. Her şeyi çift tıklayan aptal kullanıcılar için bir kapsam yoktur! – gezpage

+1

İşlenmeli, ama değil. Şifre isteği aralığı sona erdikten sonra, ikili bağlantıyı yeniden çift tıklattığınızda aynı şey. Benim için çalışan tek şey, fosfere yönlendirmeyi 'geçersiz kılmak': eylemi teyit et, bu yüzden yazdığım eylemleri yönlendir. Fos kullanıcı paket kontrolcüsünün temel olarak geçersiz kılınan kısmı. Benim eylemimde, eğer onay varsa, onay karmasını kontrol ediyorum, eğer varsa fosuserbundle: registration: onaylayın. Değilse - bazı mesajlar ekledim. Daha sonra bazı kodları sağlayabilirim. – tiriana

cevap

5

İşte eylemi geçersiz kılmaya yönelik kod. Temel olarak sadece gerçek FOS eyleminin bir kısmını kopyaladı ve modifiye edildi.

Kullanıcı paketi denetleyicisi klasörünüzde bir RegistrationController.php dosyası oluşturun ve orada bulunan RegistrationController sınıfını buraya yerleştirin.

<?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', uygulamanızın paketinin bir ebeveyini yapmalısınız, [buraya bakın] (http://symfony.com/doc/master/bundles/FOSUserBundle/overriding_controllers.html) – IROEGBU

İlgili konular