[翻译]lithium 快速上手(QuickStart)
快速入门
经典博客教程
很感谢你尝试Li3!这一部分栏目为那些想了解这个框架可以做什么的php用户所设计。像这样深入代码是一种很好的方式去体会快速应用开发(Rapid Application Development)。
等到你完成了这一部分的学习你将搭建一个可以读写数据库的简单博客平台。而之后的部分栏目将解释更多细节。
配置
首先:保证你的第一个项目已经安装并且开始工作。如果你没有真正安装那还是要核实这一目录的 安装指南。 保证你接下来的每一步都是准确无误的。
等你安装所有工作以后,你应该可以通过浏览器浏览你的安装路径(比如:http://project.dev or http://127.0.0.1:8080, 剩下的博客教程假定你已经搞定了上面的工作)。然后浏览器将显示下面这样的页面片断。注意一些小细节可能和你系统设置的不太一样,但是所有的页面那些box都应该是绿色或者蓝色。如果不是的话就根据页面box下面的指引来修正。

MongoDB
当然我们博客需要一些稳定存储层。这个例子中,我们会用 MongoDB, 一个NoSQL(非关系型) 数据库。非关系型数据库的一个优点是不用制定预先的schema(模式),所以它和RAD开发方式完美的合作。
框架支持这些关系型数据库(MySQL,MariaDB,PostgreSQL,SQLite)和非关系型数据库(MongoDB,CouchDB)并且是第一个通过一个ORM模型来支持
想要初始化数据库,在mongoDB官方菜单下根据你的操作系统跟着指示一步步完成,开启数据库引擎。
为了让PHP访问mongo 你还应该安装PHP mongoDB 驱动。在mongoDB 官方文档下面的PHP驱动。驱动安装好了以后,我们重启动服务器来让修改生效。
现在,如果你刷新浏览器的页面,你应该可以看到一个律师的mongoDB 像图片下面的一样。如果你还有别的问题,那看看mongodb的开启指南是一个不错的方式。
现在我们有一个php可以访问的数据库了,然我们告诉Li3吧。通过修改项目文件 project/app/config/bootstrap/connections.php。第一,删除文件里面已经有的连接,为我们的博客添加一个新的连接:
// MongoDB Connection
Connections::add('default', array(
'type' => 'MongoDb',
'database' => 'blog',
'host' => 'localhost'
));
第一个参数仅仅知识命名来告诉别人连接什么东西罢了,li3 默认也是用 ‘default’连接除非另有说明。
第二个参数用来指定连接信息。在这个例子中,我们制定连接类型是’MongoDB’,通过域名‘localhost’服务连接数据库叫做‘blog’。这些参数可以被指定多种不同方式-看项目的文件-
/app/bootstrap/connections.php获得更多信息吧。
像这样修改bootstrap文件是一种普通方式配置li3。看boostraping 指南来获得根多配置框架的细节。
我们的应用现在可以连接MongoDB数据库服务了,所以我们开始写blog平台代码吧。
MVC 以M开始
li3用了MVC模式。如果你不熟悉web开发模式那么你等等在去看一下吧,但是现在我们先创建我们的第一个model(模型),一个提交模型用来处理博客post的域逻辑。
首先,在project/app/models/Posts.php创建一个新文件。如果你命名你的文件和结构化你的代码通过li3的惯例,核心的库代码将自动处理大量工作。这也意味着model文件本身是简单和短小的。
namespace app\models;
class Posts extends \lithium\data\Model {}
这里背后有很多工作。首先,li3知道我们用了默认的连接因为我们并没有额外指定。接着,知道我们的model命名为Posts,它将用MongoDB建立叫做‘posts’的连接。我们当然继承了很多有用的方法和操作用于处理数据库,并且在接下来的部分教程我们将学到更多有关的内容。
先休息一下,什么?schema安装?事实上,MongoDB并不要求你去一开始就是设置-仅仅等到你insert或着执行数据库处理才适当的请求。这就是RAD!
在Control层
控制器安装只是一个简单的开始。创建一个新文件在项目 /app/controllers/PostsController.php 同时写上下面的东西:
namespace app\controllers;
class PostsController extends \lithium\action\Controller {}
你应该注意到了这个细节:文件名是驼峰命名的,和类名也是。文件夹路径匹配他们各自的命名空间,并且是反斜杠。这是li3的一部分代码约定,你应该遵守它并且享受它为你带来的便利。
然后我们继续创建一个简单的活动,创建一个新的index()函数在你的新创建的控制器里面。在我们尝试连接所有的三个模型,控制器和视图,让我们简单的做个小处理输入一些假数据到view。下面是我们的做的。
namespace app\controllers;
class PostsController extends \lithium\action\Controller {
public function index() {
return array('foo' => 'bar', 'title' => 'Posts');
}
}
li3行为发送数据到view通过返回组合数组确定各自的view的变量。下面简单的例子,我们view将接受字符串‘bar’在 $foo 而且 ‘Posts’ 在 title 将被用来设置页面的标题标签)。这个设定也可以用于compact()函数。如果我有一系列的变量我喜欢这样传,像下面这样方便:
return compact('lions', 'tigers', 'bears');
待续
原文地址:http://li3.me/docs/manual/quickstart
[翻译]lithium 快速上手(QuickStart)的更多相关文章
- 快速上手RaphaelJS-Instant RaphaelJS Starter翻译(一)
(目前发现一些文章被盗用的情况,我们将在每篇文章前面添加原文地址,本文源地址:http://www.cnblogs.com/idealer3d/p/Instant_RaphaelJS_Start ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手
原文链接:Hello, Android Multiscreen Quickstart. 译文链接:Hello,Android Multiscreen快速上手 本部分介绍利用Xamarin.Androi ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- knockoutJS 快速上手
翻译:Knockout 快速上手 - 3: knockoutJS 快速上手 许多时候,学会一种技术的有效方式就是使用它解决实际中的问题.在这一节,我们将学习使用 Knockout 来创建一个常见的应用 ...
- EF Core 快速上手——EF Core 入门
EF Core 快速上手--EF Core 介绍 本章导航 从本书你能学到什么 对EF6.x 程序员的一些话 EF Core 概述 1.3.1 ORM框架的缺点 第一个EF Core应用 本文是对 ...
- Flask入门和快速上手
目录 Flask入门和快速上手 python三大主流框架对比 Flask安装 依赖 可选依赖 创建flask项目 flask最小应用--hello word 非法导入名称 调试模式 路由 唯一的 UR ...
- python的requests快速上手、高级用法和身份认证
https://blog.csdn.net/qq_25134989/article/details/78800209 快速上手 迫不及待了吗?本页内容为如何入门 Requests 提供了很好的指引.其 ...
- 第2章 初学 emWin 的准备工作及其快速上手
以下内容转载自安富莱电子论坛:http://forum.armfly.com/forum.php?mod=viewthread&tid=24552&extra=page%3D3%26f ...
- axure快速上手
Axure RP是一个专业的快速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司:RP则是Rapid Prototyping(快速原型)的缩写.Axure RP是美国Axur ...
随机推荐
- 【转】24Cxx 系列EEPROM通用程序及应用
关于I2C 学习的时候介绍得最多的就是24C02 这里存储EEPROM了,但学的时候基本只是讲讲简单的I2C 的总线数据传输而已,即使先gooogle上搜索也绝大部分这这样的文章,很少有说到如何在实际 ...
- LeetCode Design Hit Counter
原题链接在这里:https://leetcode.com/problems/design-hit-counter/. 题目: Design a hit counter which counts the ...
- vim - Removing duplicate lines
http://vim.wikia.com/wiki/Uniq_-_Removing_duplicate_lines :sort u
- win10快速开机
百度经验:jingyan.baidu.com 在win8系统出现以后的win系统中,都有一个特点,那就是快速启动,可是,相信大家都有这样一个问题,就是,自己明明用的是win8(或者win10)系统,可 ...
- leetcode 28
题目描述: Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if ...
- c3p0连接池]
<c3p0-config> <!-- 默认配置 --> <default-config> <property name="jdbcUrl" ...
- [Spring常见问题]java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
这个问题是因为部署在tomcat下的项目中没有springweb包 但是问题来了,但是我的项目中有呀,maven都引了呀,然后我就懵B啦!看到这个博客我就豁然开朗了:http://my.oschina ...
- 纯html、css3、js的时钟
之前在网上看了一些使用js写的时钟,但感觉实现的方法有点麻烦,所以就自己重新写了一个例子,样子有点丑,但方法比较简单,大家就凑合看吧 其中采用的主要方法是原生js里面的Data(时期)对象,以及它的. ...
- [整理]Centos6.5 + hadoop2.6.4环境搭建
搭建Hadoop集群环境(3台机器) 1 准备环境 1.1 安装系统,并配置网络使3台机器互联互通,且SSH可直连(无需密码.保存私钥) 1.1.1 安装系统 安装Centos 6.5系统 安装过程略 ...
- WdatePicker 没有权限 不能执行已释放 Script 的代码
提示 拒绝访问 或 没有权限 或 ' Window.document 或 '$dp' 为空或不是对象 $dp.dd is undefined 之类的错误 SCRIPT70: 没有权限 WdatePic ...