2014-03-05 93 views
0

我需要在我的包中重写regitration contrller 1。覆盖FOSUserBundle中的RegistrationController Symfony

我在userbundle中创建了这个文件,但是它给出了我在stackoverflow中看到很多但没有回复的错误。

错误是

ContextErrorException:运行时提示:TA宣言\ UserBundle \控制器\这个RegistrationController :: registerAction()应与FOS \ UserBundle \控制器\这个RegistrationController :: registerAction兼容(Symfony的\组件\ 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(), 
     )); 
    } 
} 

即使我改变

public function registerAction() 

public function registerAction(Request $request) 

错误成为ContextErrorException

:运行时注意事项:TA \ UserBundle \控制器\这个RegistrationController :: registerAction声明()应该与E:\ php \ xampp \ h中的FOS \ UserBundle \ Controller \ RegistrationController :: registerAction(Symfony \ Component \ HttpFoundation \ Request $ request)兼容tdocs \平台的\ src \ TA \ UserBundle \控制器\ RegistrationController.php线9

回答

0

你尝试把全 '的Symfony \分量\ HttpFoundation \ $申请的请求' 到你的方法定义是什么?

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

同样的错误 – 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”功能,通过“请求”参数去父母registerAction“函数存在