Oto kod zastępujący działanie. Zasadniczo po prostu skopiowano część rzeczywistej akcji FOS i zmodowano.
Utwórz plik RegistrationController.php w folderze kontrolera pakietu użytkownika i umieść tam nadpisującą klasę RegistrationController.
Zakładając swój tobołek użytkownika jest Acme \ UserBundle:
<?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);
}
}
}
Mając ten sam problem i szuka rozwiązania. Nie ma miejsca dla głupich użytkowników, którzy dwukrotnie klikną wszystko !! – gezpage
Należy go obsługiwać, ale tak nie jest. To samo po dwukrotnym kliknięciu linka do ponownego wpisywania hasła, po wygaśnięciu interwału żądania hasła. Jedyną rzeczą, która zadziałała dla mnie, było "przesłonięcie" routingu do fosuser'a: potwierdź działanie, aby przejść do działania, które napisałem. Zasadniczo nadpisywanie części kontrolera pakietów użytkowników fos. W mojej akcji sprawdzam hash potwierdzenia, jeśli istnieje, przesyłaję dalej do fosuserbundle: rejestracja: potwierdź. Jeśli nie - echo komunikatu. Mogę dostarczyć trochę kodu później. – tiriana