我想在我的模板中插入FOSUserBundle的登录表单,如下所示:
<div id="sidebar">
{% render "FOSUserBundle::Security::login" %}
</div>
Run Code Online (Sandbox Code Playgroud)
但最初不要渲染在loginAction()代码中调用的模板.
我以为我觉得在这个例子中传递我想要渲染的模板作为'max'的参数是有用的:
<div id="sidebar">
{% render "AcmeArticleBundle:Article:recentArticles" with {'max':
3} %}
</div>
Run Code Online (Sandbox Code Playgroud)
这在symfony2中可能吗?如果不..
我应该使用loginAction中的相同代码为我的包创建另一个操作吗?或者我应该修改原始的loginAction代码并编写控制结构?
if(currentPage == 'home')
renderResponse('template1')
else
renderResponse('template2')
Run Code Online (Sandbox Code Playgroud)
Dav*_*les 36
您可以创建一个部分来存储纯HTML表单,例如这个简单的表单:
<form action="{{ path("fos_user_security_check") }}" method="post">
<label>Email</label>
<input type="text" name="_username" required="required" />
<label>Password</label>
<input type="password" name="_password" required="required" />
<button type="submit">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
然后在你的布局中只包括你的全新部分:)
如果您需要csrf令牌(强烈建议使用),只需将提供程序定义为Twig全局变量:
twig:
globals:
fos_csrf_provider: "@form.csrf_provider"
Run Code Online (Sandbox Code Playgroud)
然后只需在表单中添加隐藏的输入字段:
<input type="hidden" name="_csrf_token" value="{{ fos_csrf_provider.generateCsrfToken('authenticate') }}" />
Run Code Online (Sandbox Code Playgroud)
Tom*_*oms 10
您必须指定您正在呼叫控制器
{{ render(controller('FOSUserBundle:Security:login')) }}
Run Code Online (Sandbox Code Playgroud)