KU案例2之05注销和整理

symfony2如何注销呢?

来看看Security.yml的Logout

path是你注销路由的名称。将其设置为logout-同样我们需要创建这样一个路由。target是当用户退出后重定向页面的。我们把target设置为_demo路由,后面我们会调整它:

下面来添加logout路由。在SecurityController里创建方法并使用@Route annotation:

就像loginCheckAction一样这里的代码不会实际运行。symfony会拦截请求,并为我们处理注销操作。尝试访问 /logout。太好了!你可以看到debug工具栏又变成了匿名用户。

 

整理loginAction

如果我们登录失败会看到一个“Bad Credentials”消息。Symfony处理登录时,这个错误会保存到session的一个特殊键里,而我们只是在loginAction抓取出来。

删除if语句,只留下两个部分:

如果使用use_forward,那么symfony会转发到login页面而不是重定向。

 

添加一个css

我知道登录页面很丑,所以我做了一个login.css文件来解决。

让我们创建它到UserBundle下的Resources/public/css目录:

运行 app/console assets:install 并添加 –symlink配置

symfony会将src/Yoda/UserBundle/Resources/public目录下的文件创建到web/bundles/user中去。这个web/就是你应用程序的根目录,使得浏览器可以访问到我们新的/bundles/user/css/login.css。

那我们怎么才能添加这个css到我们的页面呢?首先,打开base模板。在这里我们有一群blocks,其中有一个stylesheets块,我们可以把全局的css文件放到这里面:

你发现我们不存在此EventBundle,所以我们要创建一个EventBundle。输入命令php app/console generate:bundle  –namespace=Yoda/EventBundle

创建完成后,将public.rar里面的css和img文件夹拷贝到src/Yoda/EventBundle/Resources/public目录下。

再次运行

样式文件已经全部存在了。

让我们来看看继承他的login.html.twig文件并把login.css添加到页面:

很棒,等等你会看到一些问题?它覆盖了之前base.html.twig的样式,但是我们不想这样。有一个秘诀就是使用twig的parent()函数。通过这样的方式父类块里的内容也被包入进来了:

现在你刷新。好看一点了,所以说当你要添加css或者js到一个页面那么你就这样做。

我们还需呀加入少许的错误class,让它看起来更好些:

下面我们要做的事情会让页面看起来更好,让我们打开base.html.twig,添加bootstrap的css文件:

返回login.html.twig,调整一下提交按钮:

刷新好多了!虽然我不是美工,但是我希望他好看些!

 

翻译这些错误的登录信息

在这里我们看到的“Bad Credentials”消息提示,太有程序员的味道了,因为这个消息来自于symfony核心。所以我们要使用翻译来自定义它。

首先使用Twig trans 过滤这个消息:

接下来,我们创建一个translation文件在app/Resources/translations/messages.en.yml目录中。这个文件中仅仅是简单的键值对:

现在,我只需要在app/config.yml文件中激活它就可以了

现在好了,试试吧!

3 Comments

    • 这篇文章很不错,能够让你明白在传统表单下如何完成登陆和注册,如果您在最新版的symfony3.0下可能你要更新一些过时的函数。

  1. 实在抱歉!当时我写这些的时候,本想写完了以后将样式打包上传到服务器以供下载,但是我忘记了?当然他会影响程序的美观。
    但并不影响程序的运行和理解,因为里面只是一些样式,如果你懂一些你可以自己写一些,也会更有个性。

发表评论