重构狗屎皮:第五天

继重构狗屎皮第四天后,我要开始非常重要的一个环节:狗屎皮后台的管理。而后台管理必然牵涉到用户登录。

在Symfony框架中,这两个功能都可以简单的实施。 首先是后台模块的创建,基本上需要如下几个命令:

//创建后台应用
symfony generate:app backend

//创建后台模块,其中的G4pArticle/G4pCategory是之前创建前台应用时的数据模型

symfony doctrine:generate-admin backend G4pArticle --module=article
symfony doctrine:generate-admin backend G4pCategory --module=category

这时,如果你访问http://localhost/backend_dev.php/article就已经可以看到一个最基本的CRUD界面。这个界面功能已经十分完备:

  • 分页
  • 排序
  • 过滤
  • 单个记录的CRUD操作
  • 多个记录的批操作
  • 数据验证
  • 等等等等……

我们当然可以对其进行一些定制,具体的我就不再一一列出。

这时的后台界面还没有任何验证机制,这样的状态是不能被用到实际环境中去的。所以要加入后台的用户验证机制。

Symfony准备了所谓的“插件”机制来协助我们完成这个步骤。通过以下命令可以安装Symfony内置的sfDoctrineGuardPlugin插件:

symfony plugin:install sfDoctrineGuardPlugin

在我的安装中,出现了一些问题。首先,我的PHP开发环境是5.3,在运行上述命令时会出现一些警告,声明一些函数已经过时。当然这个不是最致命的;其次,不知道是不是我的RPWT还是服务器的问题,解析这个插件的XML源的时候出现404错误,提示找不到这个包!幸好我在另外一个项目中已经下载好了这个插件,将所有插件的文件拷贝过来后,稍作调整即可:

// config/ProjectConfiguration.class.php
class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->enablePlugins(array(
         'sfDoctrinePlugin',
         'sfDoctrineGuardPlugin' //这个要手动添加,但是如果通过plugin:install安装则不需要
    ));
  }
}

$ php symfony doctrine:build --all --and-load --no-confirmation

//重新生成数据库,以加入用户信息
// apps/backend/lib/myUser.class.php
// 修改myUser类使其从sfGuardSecurityUser类派生而来
class myUser extends sfGuardSecurityUser
{
}
# apps/backend/config/settings.yml
//修改登录使用的模块和动作
all:
  .settings:
    enabled_modules: [default, sfGuardAuth]
    # ...
  .actions:
    login_module:    sfGuardAuth
    login_action:    signin
    # ...
//最后创建用户root,并提升为管理员
$ php symfony guard:create-user root SecretPass
$ php symfony guard:promote root

进行了如上步骤后,如果再次访问backend_dev.php,就会首先进入登录界面: 输入正确的用户名和密码后进入管理界面。

至此,狗屎皮重构已经基本完成!祝贺我吧! 本文收录于[go4pro.org]

Comments

One response to “重构狗屎皮:第五天”

  1. 猛禽 Avatar

    攻洗肾上

Leave a Reply

Your email address will not be published. Required fields are marked *