Laravel入门及实践,快速上手ThinkSNS+二次开发

【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架以后,不少人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,因此,咱们今天来讲说Laravel的入门。php

舒适提示:laravel

l 本文纯干货,文字和代码居多,且适合零基础Laravel学习者;sql

l 本文会新建一个名为 blog 的 Laravel 程序,这是一个很是简单的博客。数据库

l 欢迎随时关注ThinkSNS+的研发动态,有产品问题、优化建议、售前咨询、售后咨询、技术支持均可以咨询QQ3298713109,手机18108035545(同微信)。浏览器

本文主要内容:服务器

· 新建 Laravel 程序,如何链接数据库;微信

· Laravel 程序的基本文件结构;架构

· MVC(模型,视图,控制器)和 REST 架构的基本原理;app

· 如何快速生成 Laravel 程序骨架;composer

学习Laravel前提:你必须是会PHP语言的程序技术人员,不然,应先学习PHP语言,再学习laravel框架,最后,才能上手社交系统ThinkSNS+的二次开发,如下是可能使用到的资源:

· PHP 5.4 及以上版本

· 包管理工具 Composer。Composer指南官网:https://getcomposer.org/, 中文网:http://www.phpcomposer.com/

· SQLite3 数据库

· PHP 语言官方网站: http://php.net/

1、新建 Laravel 程序

文中的示例代码使用 $ 表示命令行提示符,你的提示符可能修改过,因此会不同。在 Windows 中,提示符多是 c:source_code>。

一、安装 Laravel

打开命令行,跟着如下步骤执行下文中全部以 $ 开头的代码命令。

l 先确认是否安装了 PHP 5.4 或者以上的版本:

1安装Laravel.png

若是你还没安装 PHP,请访问 http://php.net/ ,先安装PHP。

l 而后,确认是否在 PATH 中:

$ sqlite3 --version

l 安装 Laravel , 经过 Laravel 安装器

首先, 使用 Composer 全局下载并安装 Laravel/installer:

$ composer global require "laravel/installer=~1.1"

安装而且配置成功后, 可使用命令 laravel new 在您指定的目录下建立一份全新安装的 Laravel 应用, 如这样的调用: laravel new blog 将会在当前目录下建立一个叫 blog 的目录。

Laravel 框架使用 composer 来执行安装及管理依赖。若是尚未安装它的话,请先从安装 Composer 开始吧。

安装Composer以后,您能够经过终端执行下列命令来安装 Laravel:

$ composer create-project laravel/laravel your-project-name --prefer-dist

这个命令会下载并安装一份全新的 Laravel 存放在指定的 your-project-name 的目录中。

二、建立 Blog 程序

Artisan 是 Laravel 内建的命令行工具,它提供了一些有用的命令协助您开发,它是由强大的 Symfony Console 组件所驱动。

l 打开终端,进入有写权限的文件夹,生成一个新程序:

$ laravel new blog

或者

$ composer create-project laravel/laravel blog --prefer-dist

这个命令会在文件夹 blog 中新建一个 Laravel 程序。

执行 laravel new -h 能够查看新程序生成器的全部命令行选项。

l 生成 blog 程序后,进入该文件夹:

$ cd blog

blog 文件夹中有不少自动生成的文件和文件夹,组成一个 Laravel 程序。

2、Hello, Laravel!

首先,咱们来添加一些文字,在页面中显示。为了能访问网页,要启动程序服务器。

$ php artisan serve

上述命令会启动 PHP 内建的开发服务器,要查看程序,请打开一个浏览器窗口,访问http://localhost:8000 。应该会看到默认的 Laravel 信息页面:

要想中止服务器,请在命令行中按 Ctrl+C 键。服务器成功中止后回从新看到命令行提示符。在大多数类 Unix 系统中,包括 Mac OS X,命令行提示符是 $ 符号。

一、显示“Hello, Laravel!”

要在 Laravel 中显示“Hello, Laravel!”,须要新建一个控制器和视图。

l 建立控制器

控制器可用控制器生成器建立,你要告诉生成器,我想要个名为“welcome”的控制器,以下所示:

$ php artisan controller:make WelcomeController --only=index

运行上述命令后,Laravel 会生成 app/controllers/WelcomeController.php 文件。生成文件后修改其中的 index 方法:

1显示“Hello,Laravel”.png

l 建立视图:

在 app/views/ 目录新建文件夹 welcome 并建立文件 index.blade.php ;

在 index.blade.php 文件中添加 <h1>Hello, Laravel!</h1> ;

二、设置程序的首页

咱们已经建立了控制器和视图,如今要告诉 Laravel 在哪一个地址上显示“Hello, Laravel!”。这里,咱们但愿访问根地址 http://localhost:8000 时显示。可是如今显示的仍是欢迎页面。

咱们要告诉 Laravel 真正的首页是什么。

在编辑器中打开 app/routes.php 文件。

2-1设置程序的首页.png

咱们找到 :

Route::get('/', function()

{

return View::make('hello');

});

修改成:

Route::get('/', 'WelcomeController@index');

告知 Laravel,访问程序的根路径时,交给 welcome 控制器中的 index 动做处理。

3、开始使用

前文已经介绍如何建立控制器、动做和视图,下面咱们来建立一些更实质的功能。

在此以前咱们须要修改一些配置:

· app/config/app.php 文件中的 debug 选项设置为 true (注:开启开发模式,更友好的开发提示);

· app/config/database.php 文件中的 default 选项设置为 sqlite (注:咱们以前选择 sqlite 做为默认数据库);

在博客程序中,咱们要建立一些对象资源,好比文章,人和动物,能够被建立、读取、更新和删除,这些操做简称 CRUD。

Laravel 提供了资源控制器能够简单的创建跟资源相关的 RESTful 控制器。
建立文章资源后,app/routes.php 文件的内容新增以下:

Route::resource('articles', 'ArticlesController');

执行 $ php artisan routes 任务,会看到定义了全部标准的 REST 动做。输出结果中各列的意义稍后会说明。

1全部标准的 REST 动做.png

下一节,咱们会加入新建文章和查看文章的功能。这两个操做分别对应于 CRUD 的 C 和 R,即建立和读取。

一、挖地基

首先,程序中要有个页面用来新建文章。一个比较好的选择是 /articles/create。这个路由前面已经定义了,能够访问。打开 http://localhost:8000/article... ,会看到以下的路由错误:

错误图片1.png

产生这个错误的缘由是,没有定义用来处理该请求的控制器。解决这个问题的方法很简单:建立名为 ArticlesController 的控制器。执行下面的命令便可:

$ php artisan controller:make ArticlesController

打开刚生成的 app/controllers/ArticlesController.php 文件,控制器就是一个类,继承自 BaseController。在这个 ArticlesController 类中定义了对应的资源动做。动做的做用是处理文章的 CRUD 操做。

修改 ArticlesController.php 文件中的

public function create()    

{

    //

}

public function create()

{

    return View::make('articles.create');

}

在 PHP 中,方法分为 public、private 和 protected 三种,只有 public 方法才能做为控制器的动做。

如今刷新 http://localhost:8000/article... ,会看到一个新错误:

错误图片2.png

产生这个错误的缘由是,Laravel 但愿这样的常规动做有对应的视图,用来显示内容。没有视图可用,Laravel 就报错了。

新建文件 app/views/articles/create.blade.php,写入以下代码:

<h1>New Article</h1>

再次刷新 http://localhost:8000/article... , 能够看到页面中显示了一个标头。如今路由、控制器、动做和视图都能正常运行了。接下来要编写新建文章的表单了。

二、首个表单

要在模板中编写表单,可使用“表单构造器”。Laravel 中经常使用的表单构造器是 Form。在 app/views/articles/create.blade.php 文件中加入如下代码:

5首个表单.png

如今刷新页面,会看到上述代码生成的表单。在 Laravel 中编写表单就是这么简单!

在 Form 方法的块中,Form::text 建立了两个标签和两个文本字段,一个用于文章标题,一个用于文章内容。最后,Form::submit 建立一个提交按钮。

修改 app/views/articles/create.blade.php 文件中的 Form::open,改为这样:

{{ Form::open(array('url' => 'articles')) }}

这里,咱们把 url 参数的值设为 articles 。对应的地址是 /articels,默认状况下,这个表单会向这个路由发起 POST 请求。这个路由对应于 ArticlesController 控制器的 store 动做。

表单写好了,路由也定义了,如今能够填写表单,而后点击提交按钮新建文章了。

三、建立文章

提交表单,会看到一个白屏。如今暂且无论这个错误。store 动做的做用是把新文章保存到数据库中。

提交表单后,其中的字段以参数的形式传递给 Laravel。这些参数能够在控制器的动做中使用,完成指定的操做。要想查看这些参数的内容,能够把 store 动做改为:

public function store()

{

    dd(Input::all());

}

dd 函数为 Laravel 内置的打印输出函数,Input::all() 取得全部发出请求时传入的输入数据。

若是如今再次提交表单,不会再看到白屏错误,而是会看到相似下面的文字:

6建立文章.png

store 动做把表单提交的参数显示出来了。不过这么作没什么用,看到了参数又怎样,什么都没发生。

四、建立 Article 模型

在 Laravel 中,模型的名字使用单数,对应的数据表名使用复数。

建立 app/models/Article.php 并写入如下代码:

图片描述

注意咱们并无告诉 Eloquent Article 模型会使用哪一个数据库表。若没有特别指定,系统会默认自动对应名称为「类名称的小写复数形态」的数据库表。因此,在上面的例子中, Eloquent 会假设 Article 将把数据存在 articles 数据库表。

五、运行迁移

使用 Artisan CLI 的 migrate:make 命令创建迁移文件:

$ php artisan migrate:make create_articles_table --create=articles

迁移文件会创建在 app/database/migrations 目录下,文件名会包含时间戳,用于在执行迁移时用来决定顺序。

app/database/migrations/20140903084339createarticlestable.php (你的迁移文件名可能有点不同)文件的内容以下所示:

7-1运行迁移.png

修改其中的建立代码为:

7-2运行迁移.png

在这个迁移中定义了一个名为 up 的方法,在运行迁移时执行。up 方法中定义的操做都是能够经过 down 方法实现可逆的,Laravel 知道如何撤销此次迁移操做。运行迁移后,会建立 articles 表,以及一个字符串字段和文本字段。同时还会建立两个时间戳字段,用来跟踪记录的建立时间和更新时间。

而后,使用 Artisan 命令运行迁移:

$ php artisan migrate

Laravel 会执行迁移操做,告诉你建立了 articles 表。

Migration table created successfully. Migrated: 20140903084339createarticlestable

六、在控制器中保存数据

再回到 ArticlesController 控制器,咱们要修改 store 动做,使用 Article 模型把数据保存到数据库中。打开 app/controllers/ArticlesController.php 文件,把 store 动做修改为这样:

8在控制器中保存数据.png

同时在 app/models/Article.php 添加 :

protected $fillable = array('title', 'text');

fillable 属性容许在动做中调用模型的 create 方法使用 title 和 text 属性。

再次访问 http://localhost:8000/article... ,填写表单,还差一步就能建立文章了。

七、显示文章

和前面同样,咱们要在 app/controllers/ArticlesController.php 文件中更改 show 动做,以及相应的视图文件。

9-1显示文章.png

而后,新建 app/views/articles/show.blade.php 文件,写入下面的代码:

9-2显示文章.png

作了以上修改后,就能真正的新建文章了。访问 http://localhost:8000/article... ,本身试试。

八、列出全部文章

咱们还要列出全部文章,对应的路由是:

GET|HEAD articles | articles.index | ArticlesController@index

在 app/controllers/ArticlesController.php 文件中,修改 ArticlesController 控制器 index 动做:

10-1列出全部文章.png

而后编写这个动做的视图,保存为 app/views/articles/index.blade.php:

10-2列出全部文章.png

如今访问 http://localhost:8000/articles ,会看到已经发布的文章列表。

九、添加连接

至此,咱们能够新建、显示、列出文章了。下面咱们添加一些连接,指向这些页面。

打开 app/views/welcome/index.blade.php 文件,添加:

{{ link_to_route('articles.index', 'My Blog') }}

linktoroute 是 Laravel 内置的视图帮助方法之一,根据提供的文本和地址建立超连接。这上面这段代码中,地址是文章列表页面。

接下来添加到其余页面的连接。先在 app/views/articles/index.blade.php 中添加“New Article”连接,放在 <table> 标签以前:

{{ link_to_route('articles.create', 'New article') }}

点击这个连接后,会转向新建文章的表单页面。

而后在 app/views/articles/create.blade.php 中添加一个连接,位于表单下面,返回到 index 动做:

{{ link_to_route('articles.index', 'Back') }}

最后,在 app/views/articles/show.blade.php 模板中添加一个连接,返回 index 动做,这样用户查看某篇文章后就能够返回文章列表页面了:

{{ link_to_route('articles.index', 'Back') }}

十、添加数据验证

在 app/controllers/ArticlesController.php 文件中,修改 ArticlesController 控制器 store 动做:

11-1添加数据验证.png

而后修改 app/views/articles/create.blade.php 添加 :

11-2添加数据验证.png

再次访问 http://localhost:8000/article... ,尝试发布一篇没有标题的文章,会看到一个颇有用的错误提示。

十一、更新文章

咱们已经说明了 CRUD 中的 CR 两种操做。下面进入 U 部分,更新文章。

首先,要在 ArticlesController 中更改 edit 动做:

12-1更新文章.png

视图中要添加一个相似新建文章的表单。新建 app/views/articles/edit.blade.php 文件,写入下面的代码:

12-2更新文章.png

这里的表单指向 update 动做

method: put ( patch ) 选项告诉 Laravel,提交这个表单时使用 PUT 方法发送请求。根据 REST 架构,更新资源时要使用 HTTP PUT 方法。

而后,要在 app/controllers/ArticlesController.php 中更新 update 动做:

12-3更新文章.png

最后,咱们想在文章列表页面,在每篇文章后面都加上一个连接,指向 edit 动做。打开 app/views/articles/index.blade.php 文件,在“Show”连接后面添加“Edit”连接:

12-4更新文章.png

咱们还要在 app/views/articles/show.blade.php 模板的底部加上“Edit”连接:

{{ link_to_route('articles.index', 'Back') }} |{{ link_to_route('articles.edit', 'Edit', $article->id) }}

十二、使用局部视图去掉视图中的重复代码

下面使用局部视图去掉两个视图中的重复代码。

新建 app/views/notifications.blade.php 文件,写入如下代码:

13使用局部视图去掉视图中的重复代码.png

下面来修改 app/views/articles/creat.blade.php 和 edit.blade.php 视图,使用新建的局部视图,把其中的上面代码全删掉,替换成:

@include('notifications')

1三、删除文章

如今介绍 CRUD 中的 D,从数据库中删除文章。按照 REST 架构的约定,删除文章的路由是:

DELETE articles/{articles} | articles.destroy | ArticlesController@destroy

删除资源时使用 DELETE 请求。若是还使用 GET 请求,能够构建以下所示的恶意地址:

look at this cat!

删除资源使用 DELETE 方法,路由会把请求发往 app/controllers/ArticlesController.php 中的 destroy 动做。修改 destroy 动做:

14-1删除文章.png

想把记录从数据库删除,能够在模型对象上调用 destroy 方法。最后,在 index 动做的模板(app/views/articles/index.blade.php)中加上“Destroy”连接:

14-2删除文章.png

恭喜,如今你能够新建、显示、列出、更新、删除文章了,完成了Laravel的第一次实践,祝您早日适应ThinkSNS+的技术框架,更多内容,请访问www.thinksns.com

相关文章
相关标签/搜索