自从我提出这个问题已经有很长一段时间了,从评论中可以看出,或者如果你只是阅读代码,那么设计就是非常有缺陷的。我刚刚开始使用Symfony2和MVC架构,所以很久以后我意识到为什么我永远不会得到这个问题的答案:P
从那以后,我转向了许多不同的框架,完全抛弃了Symfony的复杂方式,包括节点,主干,角度等等,生活变得简单得多。
无论如何,因为这个问题似乎仍然收集了一些观点和从Symfony(我猜)开始在Symfony开始的偏离投票,这里是固定代码和一些推理(我从我的GIT回购中提取了这个,这仍然是一个很久以前,即切齿阶段,所以我不太确定这是否是一个好方法,但无论如何)
public function indexAction() { $session = $this->getRequest()->getSession(); if($session->get('loggedin') != null ) { return $this->redirect($this->generateUrl('home'),301); } else { $loginData = array(); $loginForm = $this->createFormBuilder($loginData) ->add('email', 'email') ->add('password', 'password') ->getform(); return $this->render('AppBundle:Core:index.html.twig', array('loginForm' => $loginForm->createView()) ); } }
{% extends '::basetemplate.html.twig' %} {% block title %}PAGE TITLE{% endblock %} {% block header %} {% if app.session.get('loggedin') is null %} <div class="linear_form_holder"> {% include "AppBundle:Core:login.html.twig" with {'form':loginForm} %} </div> {% endif %} {% endblock %}
要带走的东西:
loginAction
main-page
摘要登录和注册以及其他表格,不要使用模板。将它们绑定到模型,并使用formBuilder生成表单。
额外的建议:如果可以,切换到更新的技术,如nodejs或Go(我还没有尝试过)。最初,学习投入很多,但随着时间的推移你会获益。随意忽略这些额外的建议。
玩得开心
:)