fosuserbundle を使い始めたばかりですが、今日、確認登録リンクを有効にしました。うまく機能しますが、ユーザーが電子メールの確認リンクをもう一度クリックすると、次のエラーが表示されます。
確認トークン "3hiqollkisg0s4ck4w8g0gw4soc0wwoo8ko084o4ww4sss8o4" を持つユーザーは存在しません 404 Not Found - NotFoundHttpException
このエラーはバンドルで処理する必要があると思いますよね?
ありがとう
fosuserbundle を使い始めたばかりですが、今日、確認登録リンクを有効にしました。うまく機能しますが、ユーザーが電子メールの確認リンクをもう一度クリックすると、次のエラーが表示されます。
確認トークン "3hiqollkisg0s4ck4w8g0gw4soc0wwoo8ko084o4ww4sss8o4" を持つユーザーは存在しません 404 Not Found - NotFoundHttpException
このエラーはバンドルで処理する必要があると思いますよね?
ありがとう
アクションをオーバーライドするためのコードを次に示します。基本的には、実際の FOS アクションの一部をコピーして改造しただけです。
ユーザーバンドルのコントローラーフォルダーに RegistrationController.php ファイルを作成し、オーバーライドする RegistrationController クラスをそこに配置します。
ユーザー バンドルが 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);
}
}
}