- 浏览: 39105 次
- 性别:
- 来自: 填写或太原选择
-
最近访客 更多访客>>
最新评论
-
aganblog:
xiaovsme 写道额,一篇这么一点不给力啊,yii官网有中 ...
基于YII框架1.14的博客(翻译)之(4) -
xiaovsme:
额,一篇这么一点不给力啊,yii官网有中文blog的翻译的,只 ...
基于YII框架1.14的博客(翻译)之(4)
文章列表
前言:谈到Linux下的web生产环境,大家就会想到apache这个开源服务器软件.apache可以整合大多数应用,比如 jsp,php,cgi,python等等,但是apache过于臃肿以及对静态文件响应过于缓慢让很多使用者感到头疼.而nginx作为新崛起的服务器 软件,在很多方面超出apache,定位也很明确:高性能的 HTTP 和反向代理服务器.因而,本篇主要讲的是nginx作为前端,apache作为后端的应用环境搭建过程.
为什么不使用nginx+php(fastcgi)作为生产环境?我提出我的看法.
php(fastcgi)不够稳定,经常出现502错误,生成相对复杂的页面没有优势,反 ...
6.4.4增加新功能
我们的博客应用有非常基本的功能。变成一个完整的博客系统,需要更多必须的功能,例如,日历导航,电子邮件通知,博文分类,文章导航等等。留下这些功能给有兴趣的读者去实现。
6.4 功能展望
6.4.1使用主题
不增加任何代码,我们的博客就可以主题化。为了使用主题,需要编写自定义视图文件在theme里。例如,使用一个名为classic的主题,和不同的页面布局,要建立 ...
6.3最后的盛宴(哈哈)
马上就要完成博客应用,部署之前做些调整。
6.3.1改变主页
把首页改成使用博文列表页。修改配置文件:
6.3.2 使用缓存
因为ActiveRecord依靠元数据表格决定字段信息,它花费时间读取元数据并分析它。开发期间不会影响什么,但是一个应用在运行期间,如果数据不改变那么这就是在浪费时间读取操作。因此,修改配置文件使用缓存模式:
上面代码,首先增加一个使用默认SQLite数据库缓存驱动的缓 ...
6.2 日志
一个成熟的网页应用程序常常需要记录复杂的多种多样的事件。在博客应用中,当错误发生时要记录下来。每个错误可能是程序bug或者用户的误用。记录这些错误帮助我们完善博客应用。
按照上面的配置,如果有错误或警告发生,详细信息会记录保存在/wwwroot/blog/protected/runtime。
log组件能提供更多的高级功能,例如发送日志信息给一个email列表,在JavaScript输出窗口中显示日志信息等等。更多功能参照the Guide。
6.1美化URL
当前博客应用程序多种多样的连接看起来非常乱。
此节,细说如果美化URL使他们方便搜索引擎抓取。我们的目标是在应用中使用如下链接来达到访问:
在第二个URL格式中,在URL中引入了博文title。这样做对搜索引擎是有好的。因为搜索引擎会重视出现在URL中的关键字。
为了达到目标,修改配置文件:
上文配置urlManager组件,在规则中设置它的url格式属性。
规则常常用来urlManager理解和建立理解URL格式。例如,第二个规则说明如果有一个/index.php/posts/yii请求 ...
5.3建立最近评论导航
此节,建立最后一个导航,显示最近发表的评论列表。
5.3.1建立RecentComments类
建立RecentComments类文件:
上文调用了建立在Comment类中的findRecentComments方法
5.3.2建立recentComments视图
recentComments视图保存在组件文件夹中。视图很方便的呈现出RecentComments::getRecen ...
5.2 建立标签云
标签云显示一个博文标签重要性的列表。
5.2.1 建立TagCloud类
建立TagCloud类:
和UserMenu导航不同,TagCloud导航不使用视图。反而,是用renderContent方法。因为表达式不饱和更多的HTML标签。
在首页博文以超链接的形式显示每一个标签。标签字体大小的依据是他们相对于前他标签的重要程度。假如一个标签有非常高的频率,那么会呈现一个很大的字体。
5.2.2 使用TagCloud导航 ...
5.1.4测试UserMenu导航
测试我们已完成的导航。
1.打开浏览器键入http://www.example.com/blog/index.php 检查没有错误显示在页面侧边栏。
2.单击登录链接填写登录表单。如果登录成功检查UserMenu导航出现在侧边栏,并检查用户名是否出现在导航上。
3.单击导航上的登出链接。检查是否执行登出动作,并且UserMenu导航消失。
5.1建立导航菜单
基于需求分析,需要三个不同的导航组件:用户导航,云标签导航和最近评论导航。利用yii提供的CPortlet组件开发这些导航。
这节,将开发第一个具体的导航-用户导航显示一个菜单选项列表,可以用来提供给验证过的用户。菜单内容:
-验证评论:一个超链接导向待审核评论列表。
-建立新的博文:一个链接导向博文建立页。
-管理博文:一个超链接导向博文管理界面。
-登出:一个按钮可以注销当前用户。
5.1.1建立用户导航
建立UserMenu类实现user menu导航的逻辑部分。此类 ...
4.3管理评论
评论管理包含更新,删除,审核。这些操作在CommentController类中实现。
4.3.1更新和删除评论
yiic生成的更新和删除评论的代码大部分需要改变
4.3.2审核评论
评论刚刚建立的时候,处在一个待审核状态,需要审核后才可以被访问者看到。审核一条评论是改变评论的状态字段。
建立一个叫做actionApprove的方法:
上面代码,当审核动作被一个post请求调用时,我们调用comment模型中approve方法 ...
4.2.3客户端验证
为了支持客户端验证评论表单,需要改变评论表单视图和newComment方法。
在_form.php文件里,需要在建立CActiveForm控件时设置CActiveForm::enableAjaxValidation属性为真:
在newComment方法中,插入一段代码相应AJAX验证请求。编码检查是否有一个叫做ajax的POST验证请求。如果有,调用CActiveForm::validate显示验证结果
4.2.2建立评论
处理评论建立过程,首先修改actionView()方法:
上面,渲染视图之前调用newComment()方法,newComment()方法中,生成一个评论实例并且检查是否是评论表单提交的。如果这样,尝试为post增加评论通过调用$post->addComment($comment).如果到这步,然后刷新post详细页。假如评论需要审核,讲显示一个flash消息提示。一个flash消息通常确认显示给用户。如果用户单击刷新,消息消失。
上面代码,如果可用就显示了flash消息。如果不行,显示一 ...
4.2 建立显示评论
此节,实现评论显示和建立。
为了提高与用户的交互性,我想在用户完成每个输入后立即提示可能遇到的错误。这就需要了解客户端验证方法了。下面展示一下如何用Yii轻松完成验证。当然要使用高于Yii1.1.1版本
4.2.1 显示评论
为了把建立和现实体现到一个页面上,需要使用post详细页面。在博文显示页下,首先在评论表单下显示一个评论列表。
为了达到在post详细页面显示评论,按照如下修改view脚本:
上面,调用renderPartial方法渲染一个类似view的视图叫做_com ...
4.1.2定制attributeLabels方法
接下来修改attributeLabels()方法声明每一个模板属性显示时的变量名。此方法返回名称对照。调用CHtml::activeLabel()方法显示属性label.
4.1.3定制保存过程
因为想要记录建立评论的时间,需要和从写beforeSave()方法: