The RSS
重构狗屎皮:第五天
原文链接:http://www.rsywx.net/wordpress/2011/04/02/go4pro-day-5/
分类:PHP相关
TAG:
本文被浏览了497次
作者:tr | 2011-04-02 10:05:26 | 0评

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

在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/backedn_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]

为了保证评论的有效性,我们需要对评论做出审核后进行发布。另外敬请在表单的Approved字段中随便填写一些东西——这是为了防止spam。

Ver 2.0,2009 - 2012,Go4Pro.org
知识共享许可协议
Go4Pro.org is licensed under a Creative Commons 署名-非商业性使用-相同方式共享 3.0 Unported License.
Go4Pro老版请访问:legacy.go4pro.org | Q & A

Valid XHTML 1.0 Transitional  Valid CSS!