2013-02-14 15 views
7

जो मैं करने की कोशिश कर रहा हूं वह कुछ भी कठिन नहीं है। यह सिम्फनी पर मेरी पहली परियोजना है और यह वास्तव में भ्रमित है।FOSUserBundle पंजीकरण

मैं FOSUSerbundle का उपयोग कर रहा हूं। मैं लॉगिन और पंजीकरण नहीं करना चाहता हूं /login और /registration

इसलिए मैंने एक बंडल बनाया जो FOSUSerbundle का बच्चा है ... और यह अपने twigs को ओवरराइड करता है।

मेरे पास है :: base.html.twig जहाँ मैं header.html.twig शामिल करने और मेरे पास है: {% render 'FOSUserBundle:Security:login' %} जो प्रस्तुत करना मेरी teplate (overrided FOS एक) gr8 काम करता है। सबमिट करने के बाद भी त्रुटियां :: आधार टेम्पलेट bellow "/" मार्ग पर प्रतिपादन कर रही हैं।

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

अच्छा काम करता है।

और मुझे अपने पंजीकरण के लिए बिल्कुल वही करना होगा।

तो ::base में मैं welcome_page.html.twig शामिल है, जहां मैं कोड {% render 'FOSUserBundle:Registration:register' %} और वहाँ मैं अपने rewrited टेम्पलेट के अंतर्गत है: WelcomePageBundle:Registration:register.html.twig इस:

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

जो भी मेरी rewrited बंडल से शामिल हैं: 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> 

सब कुछ एक आकर्षण की तरह काम करता है ... सभी फाइलों को शामिल किया गया है और greate प्रदर्शित किया गया है। लेकिन समस्या अब आती है।

जब मैं मार्ग पर जाने के /register

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

... डेटा को भरने और सबमिट करें ... यह काम करता है पर क्लिक करें (जो FOS बंडल से बुनियादी मार्ग है)। त्रुटियों प्रदर्शित किए जाते हैं या पंजीकरण उत्तराधिकारी है ..

लेकिन जब मैं अपने मार्ग / जहां पंजीकरण नियंत्रक प्रदान की गई है (ठीक गाया) से प्रपत्र सबमिट यह इस मार्ग :/register जो सामान्य व्यवहार है करने के लिए मेरे लेता है क्योंकि इस पथ:

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

... इस साइट त्रुटियों के साथ सफेद पृष्ठ पर उसका सिर्फ स्वच्छ प्रपत्र तो कुछ भी नहीं है के लिए बढ़ा दी नहीं है ... ठीक

लेकिन यह कैसे कर सकते हैं मैं संभव कर काम प्रदर्शित त्रुटियों और पर सफलता के साथ इस फार्म मेरी :: लॉगिन टेम्पलेट लॉगिन की तरह? और /register मार्ग पर न जाएं? मैंने को / के लिए प्रतिस्थापित करने का प्रयास किया जो मुझे मेरे ::base टेम्पलेट (जैसे लॉगिन में करता है) में लाता है।

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

लेकिन त्रुटि या सफलता से कोई भी प्रदर्शित किए जाते हैं ...

किसी समाधान को जानते हो?

+0

क्या आपने fos_user_register मार्ग को बदलने की कोशिश की है जिसमें बंडल से register.xml शामिल है और इसे/रूट के साथ (मार्ग) उपसर्ग करें? ऐसा लगता है कि आपने अभी एक और मार्ग बनाया है जो रजिस्टर नियंत्रक को निर्देशित करता है। –

+0

क्या आपको यह ठीक से काम मिल रहा है? और क्या यह वादिम का सुझाव था जिसने आपके लिए समस्या का समाधान किया? – AMP

उत्तर

4

आप कैसे http://symfony.com/doc/current/bundles/FOSUserBundle/overriding_controllers.html

पर डिफ़ॉल्ट FOSUserBundle नियंत्रकों को ओवरराइड FOSUserBundle पंजीकरण नियंत्रक को अपने होमपेज और आगे अनुरोध (http://symfony.com/doc/master/book/controller.html#forwarding) के लिए एक नियंत्रक या करने के बाद अपनी खुद की नियंत्रक से तर्क जोड़ने के लिए के बारे में आधिकारिक दस्तावेज मिल जाएगा

<?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(), 
     )); 
    } 
} 
: जो कुछ भी FOSUserBundle पंजीकरण पर करता है
संबंधित मुद्दे