所以,我正在使用FOSUserBundle,我想在弹出模块中实现注册表单,当用户点击按钮以便他可以注册时,该弹出模块会出现。
我已经有一个单独的注册页面,我设法扩展了这样的注册表单......
<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST">
{{ form_widget(form) }}
<button type="Submit">{{ 'registration.submit'|trans }}</button>
</form>
但这只有效,因为我有与FOSUserBundle相同的文件夹结构(views / registration / register.html.twig),这是我知道扩展注册表格或任何表格的唯一方法。 FOSUserBundle,但现在我想添加这个模块的表单,当我这样做时......
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">Register</a>
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST">
{{ form_widget(form) }}
<button type="Submit">{{ 'registration.submit'|trans }}</button>
</form>
</div>
</div>
</div><!-- register -->
它不起作用,因为它位于不同的位置。
我想全局使用注册表单,以便我可以在任何我想要的页面中调用该弹出模块。 不,我该怎么做?
答案 0 :(得分:1)
如果我做对了,你需要做的就是在你的网站上创建一个带有reg形式的弹出窗口。
我会这样做:在你的布局模板中你创建一些块,比如
{% block modal_registration %}
<div class="panel panel-default">
{{ render(controller('UrBundle:Registration:regForm')) }}
</div><!-- register -->
{% endblock %}
这可以很容易地用一些树枝延伸代替。
然后,创建用于渲染该块的ur控制器,它应该类似于:
class RegistrationController extends ContainerAware
{
public function regFormAction()
{
/** @var \FOS\UserBundle\Form\Factory\FactoryInterface $formFactory*/
$formFactory = $this->container->get('fos_user.registration.form.factory');
$form = $formFactory->createForm();
return $this->container->get('templating')->renderResponse('UrBundle:Registration:register.html.twig', array(
'form' => $form->createView(),
));
}
}
正如你所见,表格工厂只是一项服务,所以你可以通过你的容器访问它。
此块的模板可能与您的模板类似:
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">Register</a>
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST">
{{ form_widget(form) }}
<button type="Submit">{{ 'registration.submit'|trans }}</button>
</form>
</div>
</div>
示例真的很简单,你应该做一些工作,如果你将面临更多的问题。