2013-02-14 6 views
7

내가하려는 것은 아무 것도 어렵지 않습니다. 이것은 symfony에 관한 나의 첫 번째 프로젝트이며 정말 혼란 스럽습니다.FOSUserBundle 등록을 사용자 정의

나는 FOSUSerbundle을 사용하고 있습니다. 나는 로그인과 등록을하고 싶지 않다. /login/registration

나는 FOSUSerbundle의 자식 인 번들을 만들었고, 그것의 나뭇 가지를 덮어 쓴다.

내가 header.html.twig를 포함하고있는 곳은 : base.html.twig이고 거기에 내가 가지고있는 것은 : {% render 'FOSUserBundle:Security:login' %} 내 teplate (FOS를 오버라이드 한 것)가 gr8을 렌더링합니다. 제출 한 후에도 오류는 :: 기본 템플리트 "/"경로에서 렌더링됩니다.

#Security.yml 
    form_login: 
     check_path: /login_check 
     login_path:/
     provider: fos_userbundle 

훌륭한 작품입니다.

그리고 정확히 등록 할 때도 마찬가지입니다.

그래서 ::base에서 나는 welcome_page.html.twig 포함 어디 코드 내 rewrited 템플릿에서이 {% render 'FOSUserBundle:Registration:register' %} 거기 : WelcomePageBundle:Registration:register.html.twig이 : 또한 내 rewrited 번들로 포함

{% block fos_user_content %} 
{% include "FOSUserBundle:Registration:register_content.html.twig" %} 
{% endblock fos_user_content %}[/code] 

: WelcomePageBundle:Registration:register_content.html.twig이 :

{% for key, message in app.session.getFlashes() %} 
<div class="{{ key }}"> 
    {{ message|trans({}, 'FOSUserBundle') }} 
</div> 
{% endfor %} 

<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" id="register_form"> 
    {{ form_widget(form) }} 
    {{ form_rest(form) }} 

    <input type="submit" class="registration_submit" value="{{  'welcome_page.registration_box.register_submit'|trans }}"/> 
</form> 

<div class="v_pripade"> 
    {{ 'welcome_page.registration_box.with_reg_problems'|trans }} 
    <span style='color: #fff568'>{{ 'welcome_page.registration_box.with_reg_problems_part2'|trans }}</span> 
</div> 

모든 것이 매력처럼 작동합니다 ... 모든 파일이 포함되고 표시됩니다. 그러나 문제는 지금 온다.

내가 경로에 갈 때 /register

<route id="fos_user_registration_register" pattern="/register"> 
    <default key="_controller">FOSUserBundle:Registration:register</default> 
</route> 

... 데이터를 작성하고 ... 작동 제출 클릭 (FOS 번들에서 기본 경로입니다). 오류가 표시 또는 등록 succes에있다 ..

을하지만 등록 컨트롤러 (확인 렌더링) 렌더링 내 경로 /에서 양식을 제출할 때 정상적인 동작은이 경로 :/register 내 소요되는이 경로 이유는

<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" id="register_form"> 

...이 사이트는

OK ... 오류가있는 흰색 페이지의 단지 깨끗한 형태 그래서 아무것도 확장 것이 아니라, 내가 어떻게 가능한 작업 환경을 만들어 ON 표시 오류와 성공이 양식 MY :: 로그인과 같은 기본 템플릿? 그리고 /register 경로로 가지 않습니까? 나 /에 대한 /register을 바꾸어 시도했는데, 내 ::base 템플릿으로 가져 왔습니다 (로그인 할 때와 같습니다).

#security.yml 
form_login: 
    check_path: /login_check 
    login_path:/
    provider: fos_userbundle 

그러나 오류 또는 성공의 어느 것도 표시되지 않습니다 ...

사람이 해결책을 알고 계십니까?

+0

번들에서 registration.xml을 포함하는 fos_user_register 경로를 변경하고/경로 대신/대신/경로를 접두어로 사용하려고 시도 했습니까? 당신이 방금 등록 관제사에게 지시하는 다른 길을 만들었던 것처럼 보입니다. –

+0

제대로 작동합니까? 그리고 당신을 위해 문제를 해결 한 Vadim의 제안 이었습니까? – AMP

답변

4

당신은 FOSUserBundle 등록 컨트롤러 홈페이지 앞으로 요청 (http://symfony.com/doc/master/book/controller.html#forwarding)에 대한 컨트롤러를 만들기 http://symfony.com/doc/current/bundles/FOSUserBundle/overriding_controllers.html

에서 기본 FOSUserBundle 컨트롤러를 무시하거나 수행 한 후 자신의 컨트롤러 로직을 추가하는 방법에 대한 공식 문서를 찾을 수 있습니다

<?php 

namespace Acme\UserBundle\Controller; 

// Imports @route annotation 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 

class CustomRegistrationController extends BaseController { 

    /** 
    * @Route("/") 
    */ 
    public function register() { 
     $response = $this->forward('FOSUserBundle:Registration:register'); 

     return $response; 
    } 
} 

또는

<?php 

namespace Acme\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(), 
     )); 
    } 
} 
,536 : 어떤 FOSUserBundle 등록에서 수행
관련 문제