İş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);
}
}
}
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
İş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