生活在远方

是的,因为真正的生活是在远方

用Symfony 2重建“任氏有无轩”——第一天

Symfony是我最喜欢用的PHP框架,没有之一。我从2009年1月开始用Symfony 1.2(系列教程第一篇:http://www.rsywx.net/wordpress/2009/01/12/going-for-symfony-%e7%ac%ac%e4%b8%80%e5%a4%a9/)重建我的“任氏有无轩”,然后在2011年3月用Symfony 1.4.9(系列教程第一篇:http://www.rsywx.net/wordpress/2011/03/05/go4pro-day-1/)重建“狗屎皮”,一直就没有离开过Symfony这个环境。 Symfony在2011年3、4月份开始推出Symfony 2,并启用了全新的域名(http://www.symfony.com)。我一直关注着它的发展,并在自己家里的电脑上开始尝试。如今,Symfony 2已经开发到了2.0.4——我前两天才更新到2.0.3啊,可不可以不要这么频繁的更新版本啊,亲——我也决定开始用SF2来重建我的“任氏有无轩”站点。

Read the rest of this entry »

在SF2中使用第三方库

著名的PHP框架Symfony 2已经出到RC4,距离正式版本只有一步之遥。我也赶时髦安装了一下,用来改造我的任氏有无轩。 SF2完全基于PHP 5.3开发,要求运行时的支持环境也是PHP5.3以上。目前我的虚拟主机还不支持PHP 5.3,不过个人认为应该快了。所以使用SF2改造我的站点也算是未雨绸缪吧。

Read the rest of this entry »

重构狗屎皮:第六天

在第六天,重构后的狗屎皮终于上线了:http://www.go4pro.org。总结一下,目前新版的狗屎皮的架构是这样的: 第一大功能模块是后台的机器人抓取模块,由猛禽开发,使用的语言是Python。机器人负责遍历所有的文章来源的RSS并取出新的文章并存入数据库。 第二大功能模块是前台,由TR开发,使用的语言是PHP+Symfony 1.4。这个模块用来显示数据库里的文章等。 第三大功能模块是后台管理,由TR开发,使用的语言是PHP+Symfony 1.4。说实话,这个后台开发基本没有进行编程的工作,只是进行了一些配置就完成了。

Read the rest of this entry »

重构狗屎皮:第五天

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

Read the rest of this entry »

重构狗屎皮:第四天

今天进入狗屎皮重构的第四天。有件事要纪念一下:从今天晚间开始,我的虚拟主机上站点:BSpMq.com以及rsywx.net无法正常访问,必须翻墙。我实在不能明白的是,这样一个纯粹是打P扯谈的站点,一个以藏书、温和时事评论的站点怎么会被封?GFW真的是不可理喻了!

Read the rest of this entry »

重构狗屎皮:第三天

本次基本解决了用Symfony来完成一个master-detail表单中detail项更新的问题。

Read the rest of this entry »

重构狗屎皮:第二天

今天进入狗屎皮重构的第二天。实践证明,这第二天,确实是非常2的一天。 首先,Symfony推出了一个新框架:Symfony 2。具体介绍见:http://www.symfony.com/。我刚搭建了Symfony 1.4.9的环境,实在不想在一个全新的框架上进行开发——虽然如此做对熟悉一个东西是很有好处的。 其次,在进行代码版本控制——我用的是Mercurial——时,输入hg push死活没有反应……最后发现,由于在Windows下需要使用plink来连接远程的repo,而在第一次连接时,需要确认接受来自远程主机的一个证书,而直接hg push时,hg会间接调用plink,而此时Windows的CMD窗口无法正确的显示这个提示而导致出现“假死”。 解决方法也很简单,先显式运行一次plink,接收远程主机证书后再运行hg push即可。 第三,由于上次用Symfony还是进行我的任氏有无轩改版,距离今天已经一年多了,所以很多基本的东西都忘记了。比如: 如果对route进行了一些修改,最好是进行一次symfony cc; 如何进行主模板、子模板间的嵌套,以及数据的传递; …… 不过,总体而言还是非常顺利的。今天已经可以看到一些效果:   我用Symfony开发WEB的速度确实是比我用Python开发WEB要快的多。

Read the rest of this entry »