2014-03-05 1 views
0

내 번들에서 regitration 컨트롤러를 1로 대체해야합니다.FOSUserBundle에서 Override RegistrationController Symfony

나는 userbundle 내부에서 파일을 만들었지 만, stackoverflow에서 많은 것을 보았지만 그 대답은 없다는 오류를줍니다. 런타임주의 사항 : 선언 TA의 \ UserBundle \ 컨트롤러 \ RegistrationController :: registerAction() FOS \ UserBundle \ 컨트롤러 \ RegistrationController와 :: registerAction 호환되어야합니다 (심포니 \ 구성 요소 \

오류가

ContextErrorException입니다 HttpFoundation E에서 \ 요청 $ 요청) : PHP \ \ XAMPP \ htdocs를 \ 플랫폼 \ SRC \ TA \ UserBundle \ 컨트롤러 \ RegistrationController.php 라인 9

컨트롤러

<?php 

//src\TA\UserBundle\Controller\RegistrationController.php 
namespace TA\UserBundle\Controller; 

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

class RegistrationController extends BaseController 
{ 
    public function registerAction() 
    { 
     $form = $this->container->get('fos_user.registration.form'); 
     $formHandler = $this->container->get('fos_user.registration.form.handler'); 
     $confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled'); 

     $process = $formHandler->process($confirmationEnabled); 
     if ($process) { 
      $user = $form->getData(); 

      /***************************************************** 
      * Add new functionality (e.g. log the registration) * 
      *****************************************************/ 
      $this->container->get('logger')->info(
       sprintf('New user registration: %s', $user) 
      ); 

      if ($confirmationEnabled) { 
       $this->container->get('session')->set('fos_user_send_confirmation_email/email', $user->getEmail()); 
       $route = 'fos_user_registration_check_email'; 
      } else { 
       $this->authenticateUser($user); 
       $route = 'fos_user_registration_confirmed'; 
      } 

      $this->setFlash('fos_user_success', 'registration.flash.user_created'); 
      $url = $this->container->get('router')->generate($route); 

      return new RedirectResponse($url); 
     } 

     return $this->container->get('templating')->renderResponse('FOSUserBundle:Registration:register.html.'.$this->getEngine(), array(
      'form' => $form->createView(), 
     )); 
    } 
} 
해야) (선언 TA \ UserBundle \ 컨트롤러 \ RegistrationController :: registerAction의 : 런타임 공지 사항 :

나는 오류가

ContextErrorException되었다

public function registerAction(Request $request) 

public function registerAction() 

을 변경하는 경우에도 E : \ php \ xampp \ h에있는 FOS \ UserBundle \ Controller \ RegistrationController :: registerAction (Symfony \ Component \ HttpFoundation \ Request $ request)와 호환 가능해야합니다. tdocs \ 플랫폼 \ SRC \ TA \ UserBundle \ 컨트롤러 \ RegistrationController.php 라인 9

답변

0

당신이 당신의 메서드 정의에 전체 '심포니 \ 구성 요소 \ HttpFoundation \ 요청 $ 요청'을 넣어하려고 했습니까?

public function registerAction(Symfony\Component\HttpFoundation\Request $request) {} 
+0

같은 오류가 있습니다 'registerAction'기능의 사용을 추가해야합니다 – AhmedGroup

1

이 하나가 나를 위해 일했습니다. 내 예 :

<?php 
namespace FRMKS\FoodR\FoodApp\Controller; 

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

class RegistrationController extends BaseController 
{ 
    public function registerAction(Request $request) 
    { 
     $response = parent::registerAction($request); 

     // ... do custom stuff 

     return $response; 

    } 
} 

은 기본적 요청 부모 'registerAction'기능과 패스 '요청'PARAM로, 매개 변수 '요청 $ 요청'

관련 문제