Php 主页上的部分用户注册(索引)

Php 主页上的部分用户注册(索引),php,symfony,registration,fosuserbundle,user-registration,Php,Symfony,Registration,Fosuserbundle,User Registration,我将Symfony2 2.6.4与FOS用户包主机一起使用,我很难将部分注册从主页传递到注册页面 目标 我希望用户开始在主页上填写一些信息,然后按提交。我希望用户被传递到注册页面,并预先填写他们在首页上已经填写的项目 我尝试过的事情: 我不确定什么是可行的,并且已经在这方面花费了太多的时间。我尝试扩展注册控制器,但在开始解决问题之前就出现了错误,因此我停止了。我最后的想法是将会话中的变量传递给重写的注册表类型,并查看是否可以在那里预先填充它 以前有人做过类似的事情吗?他们肯定不会让事情变得容易

我将Symfony2 2.6.4与FOS用户包主机一起使用,我很难将部分注册从主页传递到注册页面

目标 我希望用户开始在主页上填写一些信息,然后按提交。我希望用户被传递到注册页面,并预先填写他们在首页上已经填写的项目

我尝试过的事情: 我不确定什么是可行的,并且已经在这方面花费了太多的时间。我尝试扩展注册控制器,但在开始解决问题之前就出现了错误,因此我停止了。我最后的想法是将会话中的变量传递给重写的注册表类型,并查看是否可以在那里预先填充它


以前有人做过类似的事情吗?他们肯定不会让事情变得容易

归功于@NawfalSerrar谢谢你的想法。我离得很近,但还不够近

所以我最后做的就是这个

这是执行该操作的控制器操作

/**
 * @Route("/", name="Home")
 */
public function indexAction(Request $request)
{
    $form = $this->createForm(new RegisterFormType());

    $form->handleRequest($request);

    if ($form->isValid()) {
        $data = $form->getData();
        $user = new User();
        $session = $this->get('session');

        $registration = array();
        $registration['firstName'] = $data['first'];
        $registration['lastName'] = $data['last'];
        $registration['middleInit'] = $data['middle'];
        $registration['email'] = $data['email'];
        $session->set('registration', $registration);

        return $this->redirect($this->generateUrl("fos_user_registration_register"));
    }
    return $this->render('Bundle:Page:index.html.twig', array(
        'form' => $form->createView(),
    ));
}
然后是前端的表单

{{ form_start(form,{'attr': {'class': 'reg-page'}}) }}
  <div class="reg-header">
      <h1>Get Started!</h1>
      <p>Already Signed Up? Click <a href="page_login.html" class="color-green">Sign In</a> to login
          your account.</p>
  </div>
  {{ form_errors(form) }}
  <div class="row">
      <div class="col-sm-6">
          {{ form_label(form.first) }}
          {{ form_widget(form.first, {'attr': {'class': 'form-control margin-bottom-10'}}) }}
      </div>
      <div class="col-sm-6">
          {{ form_label(form.middle) }}
          {{ form_widget(form.middle, {'attr': {'class': 'form-control margin-bottom-10'}}) }}
      </div>
      <div class="col-sm-6">
          {{ form_label(form.last) }}
          {{ form_widget(form.last, {'attr': {'class': 'form-control margin-bottom-10'}}) }}
      </div>
  </div>
  {{ form_label(form.email) }}
  {{ form_widget(form.email, {'attr': {'class': 'form-control'}}) }}
  <div class="row">
      <div class="col-lg-6 text-right">
          {{ form_widget(form.save, {'attr': {'class': 'btn-u'}}) }}
      </div>
  </div>
{{ form_end(form) }}
注册页面如下所示

{% extends '::base.html.twig' %}

{% block body %}
    {% set tokens = app.session.get('registration') %}
    {% if tokens['firstName'] is defined %}
        {% set firstName = tokens['firstName'] %}
    {% endif %}
    {% if tokens['middleInit'] is defined %}
        {% set middleInit = tokens['middleInit'] %}
    {% endif %}
    {% if tokens['lastName'] is defined %}
        {% set lastName = tokens['lastName'] %}
    {% endif %}
    {% if tokens['email'] is defined %}
        {% set email = tokens['email'] %}
    {% endif %}

    {{ form_start(form) }}
    {{ form_errors(form) }}

    {{ form_label(form.firstName, 'First Name', {label_attr: {class: 'foo'}}) }}
    {% if firstName is defined %}
        {{ form_widget(form.firstName, { attr: {class: 'TestClass'}, value : firstName  }) }}
    {% else %}
        {{ form_widget(form.firstName, { attr: {class: 'TestClass'} }) }}
    {% endif %}

    {{ form_label(form.middleInitial) }}
    {% if middleInitial is defined %}
        {{ form_widget(form.middleInitial, { attr: {class: 'TestClass'}, value : middleInit }) }}
    {% else %}
        {{ form_widget(form.middleInitial, { attr: {class: 'TestClass'}}) }}
    {% endif %}

    {{ form_label(form.lastName) }}
    {% if lastName is defined %}
        {{ form_widget(form.lastName, { attr: {class: 'TestClass'}, value : lastName }) }}
    {% else %}
        {{ form_widget(form.lastName, { attr: {class: 'TestClass'}}) }}
    {% endif %}

    {{ form_label(form.email) }}
    {% if email is defined %}
        {{ form_widget(form.email, { attr: {class: 'TestClass'}, value : email }) }}
    {% else %}
        {{ form_widget(form.email, { attr: {class: 'TestClass'}}) }}
    {% endif %}
    {{ form_label(form.plainPassword.first) }}
    {{ form_widget(form.plainPassword.first) }}
    {{ form_label(form.plainPassword.second) }}
    {{ form_widget(form.plainPassword.second) }}
    <div>
        <input type="submit" value="{{ 'registration.submit'|trans }}"/>
    </div>
    {{ form_end(form) }}
{% endblock %}

希望这有帮助

覆盖模板应该很容易,只需在相同的路径中创建一个新的分支,如app/Resources/FOSUserBundle/views/Registration/register.html.twig和app/Resources/FOSUserBundle/views/Registration/register\u content.html.twig,然后您就可以使用会话填充其中的字段。{{app.session.get'myfield'}}这有效了!我会把我的答案贴在下面。谢谢@NawfalSerrar!