继重构狗屎皮第四天后,我要开始非常重要的一个环节:狗屎皮后台的管理。而后台管理必然牵涉到用户登录。
在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]
Leave a Reply to 猛禽 Cancel reply