【发布时间】:2015-04-16 23:13:57
【问题描述】:
我有一个 Symfony2 网站的当前情况:
loginAction在SecurityController中执行的登录功能。当访问其路线时,该操作在渲染视图时使用参数(p1、p2、p3)。 (same as FOSUserBundle)RegistrationController中的注册功能registerAction正在返回使用其他参数 p3、p4、p5 的视图。 (same as FOSUserBundle)
参数用于在表单无效时保存错误消息。
我需要显示一个同时显示两种功能(登录表单和注册表单)的主页,但它也可以处理由于无效数据引起的错误。
我可以成功显示首页了(MembersManagementBundle::index.html.twig):
{{ render(controller('MembersManagementBundle:Security:login')) }}
{{ render(controller('MembersManagementBundle:Registration:register')) }}
控制器:
class IndexController extends Controller
{
public function indexAction()
{
return $this->render('MembersManagementBundle::index.html.twig');
}
}
如果输入了正确的值(无论是登录还是注册表),表单提交后重定向到正确的目标页面。
但是,
如果向其中一个表单输入了错误数据,则会重定向到其特定视图并出现特定错误(这是正常的,因为提交表单会调用action属性中指定的url,该属性会调用相应控制器中的相应操作)。
问题:
是否可以在一个模板中包含所有参数的总和的两个操作?我应该开发indexAction 以便它包含两个动作的逻辑吗?或者还有另一种方法可以将两个动作分开但将结果合并到 indexAction 中?
最后我的目标是能够生成带有所需错误的索引页面(p1,p2,p3 或p4,p5,p6)。
谢谢。非常感谢您的帮助。
【问题讨论】:
-
能否请您提供登录和注册操作的逻辑?
-
@KhorneHoly。感谢您的反馈,请查看我在编辑中提供的链接(来自 FOSUserBundle github)
-
你的动作最后是否也包含这个渲染?
return $this->render('FOSUserBundle:Registration:register.html.twig', array( 'form' => $form->createView(), ));如果是,则需要将渲染操作编辑到索引! -
@KhorneHoly,我这样做会不会陷入无限循环(渲染嵌套索引页面)?
-
否,因为只有在提交表单时才会调用您的操作。所以它会是这样 -> 用户转到索引 -> 索引呈现 2 个表单 -> 2 个表单中的 1 个将被提交 -> 动作将被触发 -> 动作呈现索引 -> 索引将呈现两个控制器它给出了表格,但由于表格不会自动提交,因此不可能有无限循环。您必须考虑的唯一想法是表单操作在第二次调用中记住第一次调用中的错误的方式。希望这有点可以理解。
标签: php symfony model-view-controller controller fosuserbundle