Symfony2 + FOSUserBundle注册表不提交,只重新加载

Chr*_*ris 5 php forms symfony twig fosuserbundle

在这个问题上,我已经在我的智慧结束了几天,我似乎无法找到问题.

概述:

  • 我正在使用FOSUserBundle作为用户管理器构建Symfony2网站,并将Propel作为数据库提供程序.
  • 我已成功覆盖登录模板,我可以从模态视图成功登录和注销.
  • 我在schema.xml中添加了6个自定义字段,模型正确构建(即我可以在列表用户管理器中查询这些字段).
  • 我可以在默认路由中成功注册为新用户,以便在我覆盖的表单上进行注册,并且数据会按预期显示在我的数据库中.

问题:

我已将注册表单移动到我的"用户管理器仪表板"中的模态视图中的最终位置.我的表单正确加载和显示,但无论出于何种原因拒绝将数据提交给控制器进行处理.相反,它只是加载注册的默认路由('/ register')并再次显示表单,但没有任何我的css,js或基本树枝模板.当我以该表单重新输入信息时,它只是重新加载,没有任何信息进入数据库.

我确信问题在于(或两者)我如何提交表格或我如何归类表格.

注意我已将类的名称更改为法定的AcmeBundle,原因很明显:)

任何人都可以对此有所了解吗?我真的要崩溃这个问题了!

提前谢谢你:D

编辑

我现在认为这可能是一个路由问题,因为我已经验证了我的表单构建并正确收集了它的所有值?

应用程序/ config.yml

#FOS UserBundle Configuration
fos_user:
    db_driver: propel # other valid values are 'mongodb', 'couchdb' and 'propel'
    firewall_name: main
    user_class: FOS\UserBundle\Propel\User
    registration:
        form:
            type: acme_user_registration

#Services
services:
    acme_user.registration.form.type:
        class: Acme\UserBundle\Form\Type\RegistrationFormType
        arguments: [%fos_user.model.user.class%]
        tags:
            - { name: form.type, alias: acme_user_registration }
    acme_user.form.handler.registration:
            class: Acme\UserBundle\Form\Handler\RegistrationFormHandler
            arguments: ["@fos_user.registration.form", "@request", "@fos_user.user_manager", "@fos_user.mailer", "@fos_user.util.token_generator"]
            scope: request
Run Code Online (Sandbox Code Playgroud)

app/routing.yml是根据文档的标准FOSUserBundle配置

# FOSUserBundle Routing
fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"

fos_user_profile:
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
    prefix: /profile

fos_user_register:
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
    prefix: /register

fos_user_resetting:
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
    prefix: /resetting

fos_user_change_password:
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
    prefix: /profile
Run Code Online (Sandbox Code Playgroud)

极致/ UserBundle /控制器/ RegistrationController.php

<?php

namespace Acme\UserBundle\Controller;

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


class RegistrationController extends BaseController
{
    public function render($view, array $parameters = array(), Response $response = null)
    {
        return parent::render($view, $parameters, $response);
    }

}
Run Code Online (Sandbox Code Playgroud)

Acme/AdminBundle/Resources/views/_addUser.html.twig这是我调用模态的地方

{% include "FOSUserBundle::layout.html.twig" %}

<!-- Modal -->
<div id="registerUser" class="reveal-modal xlarge"  data-reveal>

    <h2 align="center">Add New User</h2>
    <h6 align="center" style="color: red">All Fields are Required</h6>

    {% block fos_user_content %}
        {% render url('fos_user_registration_register') %}
    {% endblock %}

    <a class="close-reveal-modal">&#215;</a>

</div>
Run Code Online (Sandbox Code Playgroud)

app/Resources/FOSUserBundle/views/Registration/register.html.twig根据文档覆盖

{% block fos_user_content %}
    {% include 'FOSUserBundle:Registration:register_content.html.twig' %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

app/Resources/FOSUserBundle/views/Registration/register_content.html.twig根据文档覆盖

<form data-abide class="fos_user_registration_register" action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="post" >
            <fieldset>
                <legend>Personal Details</legend>

                {# First Name #}
                <div>
                    <label for="form_first_name">First Name</label>
                    <input type="text" id="form_first_name" name="form[first_name]" required pattern="[a-zA-Z]+"/>
                    <small class="error">This field is required</small>
                </div>

                {# Last Name #}
                <div>
                    <label for="form_last_name">Surname</label>
                    <input type="text" id="form_last_name" name="form[last_name]" required pattern="[a-zA-Z]+">
                    <small class="error">This field is required</small>
                </div>

                etc...
                etc...
                etc...

            </fieldset>
            <div>
                <input type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}" />
            </div>
</form>
Run Code Online (Sandbox Code Playgroud)

meh*_*hbi 4

您必须更改您的 register_content.html.twig :

{{ form_start(form, {'attr': {'class': 'fos_user_registration_register', 'id': 'register-form'} }) }}
{{ form_label(form.username) }}
{{ form_errors(form.username) }}        
{{ form_widget(form.username) }}
{{ form_label(form.email) }}
{{ form_errors(form.email) }}       
{{ form_widget(form.email) }}
{{ form_label(form.plainPassword.first, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
        {{ form_errors(form.plainPassword.first) }}
         {{ form_widget(form.plainPassword.first, { 'attr': {'class': 'form-control'} }) }}
         {{ form_label(form.plainPassword.second, null, {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
        {{ form_errors(form.plainPassword.second) }}

         {{ form_widget(form.plainPassword.second, { 'attr': {'class': 'form-control'} }) }}
         <input type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}" />

         {{ form_rest(form) }}
Run Code Online (Sandbox Code Playgroud)

这对我有用。您应该查看有关表单的 twig 文档,它将对您有所帮助。