当前位置: 首页 > Linux

Laravel入门与实践,快速入门ThinkSNS+二次开发

时间:2023-04-06 06:16:26 Linux

【摘要】由于ThinkSNS+没有使用ThinkPHP框架,而是使用了Laravel框架,所以很多人都说技术门槛提高了。其实你和TS+的距离只是学习一个新的框架而已,所以今天就来聊聊Laravel入门。温馨提示:l本文纯干货,以文字和代码为主,适合Laravel零基础学习者;l本文将新建一个名为blog的Laravel程序,这是一个非常简单的博客。l欢迎随时关注ThinkSNS+的研发。如果您有产品问题、优化建议、售前咨询、售后咨询、技术支持,可以咨询QQ3298713109,手机18108035545(同微信)。本文主要内容:·新建一个Laravel程序,如何连接数据库;·Laravel程序的基本文件结构;·MVC(模型、视图、控制器)和REST架构的基本原理;您必须是懂PHP语言的程序技术人员。不然还是先学PHP语言,再学laravel框架吧。终于可以开始对社交系统ThinkSNS+进行二次开发了。可能会用到以下资源:·PHP5.4及以上·包管理工具Composer。Composer指南官网:https://getcomposer.org/,中文网:http://www.phpcomposer.com/SQLite3数据库PHP语言官网:http://php.net/1.在Laravel中新建一个程序text示例代码使用$表示命令行提示符,你的提示符可能被修改了,所以会有所不同。在Windows上,提示符可能是c::source_code>。1.安装Laravel打开命令行,按照以下步骤执行下面所有以$开头的代码命令。l首先确认是否安装了PHP5.4或以上版本:如果没有安装PHP,请先访问http://php.net/安装PHP。l然后确认是否在PATH中:$sqlite3--versionl安装Laravel,首先使用Composer通过Laravel安装器全局下载安装Laravel/installer:$composerglobalrequire"laravel/installer=~1.1"安装完成后并且配置成功,就可以使用命令laravelnew在你指定的目录下创建一个新安装的Laravel应用,比如调用:laravelnewblog会在当前目录下创建一个名为blog的目录。Laravel框架使用Composer来执行安装和管理依赖项。如果您还没有安装它,请先安装Composer。安装Composer后,可以通过终端执行以下命令来安装Laravel:-在项目名称的目录中。2.创建Blog程序Artisan是Laravel中内置的命令行工具。它提供了一些有用的命令来帮助您进行开发。它由强大的Symfony控制台组件驱动。l打开终端,进入一个有写权限的文件夹,生成一个新程序:$laravelnewblog或$composercreate-projectlaravel/laravelblog--prefer-dist这个命令会在blog文件夹下创建一个新的Laravel程序。执行laravelnew-h查看新程序生成器的所有命令行选项。l生成blog程序后,进入这个文件夹:$cdblogblog文件夹下有很多自动生成的文件和文件夹,组成一个Laravel程序。2.你好,Laravel!首先,让我们添加一些文本并将其显示在页面上。为了能够访问网页,必须启动程序服务器。$phpartisanserve上面的命令会启动PHP内置的开发服务器。要查看程序,请打开浏览器窗口并访问http://localhost:8000。您应该会看到默认的Laravel信息页面:要停止服务器,请在命令行中按Ctrl+C。服务器成功停止后,您应该会再次看到命令提示符。在大多数类Unix系统上,包括MacOSX,命令提示符是$符号。1.显示“Hello,Laravel!”显示“你好,Laravel!”在Laravel中,您需要创建一个新的控制器和视图。l创建控制器控制器可以用控制器生成器来创建,你要告诉生成器,我想要一个名为“welcome”的控制器,如下:$phpartisancontroller:makeWelcomeController--only=index运行上面的命令,Laravel将生成app/controllers/WelcomeController.php文件。文件生成后,修改index方法:l创建视图:在app/views/目录下新建文件夹welcome,并创建文件index.blade.php;在index.blade.php文件h1>中添加

Hello,Laravel!

;2.设置程序的主页现在我们已经创建了控制器和视图,我们需要告诉Laravel在哪里显示“Hello,Laravel!”。这里,我们要在访问根地址http://localhost:8000时显示。但是现在仍然显示欢迎页面。我们将告诉Laravel真正的主页是什么。在编辑器中打开app/routes.php文件。我们发现:Route::get('/',function(){returnView::make('hello');});修改为:Route::get('/','WelcomeController@index');Inform当Laravel访问程序的根路径时,由欢迎控制器中的index动作处理。3.入门上一篇文章介绍了如何创建控制器、动作和视图。现在让我们创建一些更实质性的功能。在此之前,我们需要修改一些配置:·app/config/app.php文件中的debug选项设置为true(注意:开启开发模式,更友好的开发提示);·app/config/database.php文件默认选项设置为sqlite(注意:我们之前选择sqlite作为默认数据库);在博客程序中,我们要创建一些对象资源,比如文章、人、动物等,可以创建、读取、更新和删除。这些操作称为CRUD。Laravel提供了资源控制器,可以轻松创建与资源相关的RESTful控制器。创建文章资源后,在app/routes.php文件中添加如下内容:Route::resource('articles','ArticlesController');执行$phpartisanroutes任务,您将看到定义了所有标准REST操作。输出中每一列的含义将在后面解释。在下一节中,我们将添加创建和查看文章的功能。这两个操作对应CRUD的C和R,即create和read。1、挖基础首先,程序中要有新建文章的页面。/articles/create是一个不错的选择。这个路由之前已经定义好了,可以访问了。打开http://localhost:8000/article...,你会看到如下路由错误:这个错误的原因是没有定义处理请求的控制器。这个问题的解决方案很简单:创建一个名为ArticlesController的控制器。执行以下命令:$phpartisancontroller:makeArticlesController打开新生成的app/controllers/ArticlesController.php文件,controller是继承自BaseController的类。相应的资源操作在ArticlesController类中定义。action的作用是处理文章的CRUD操作。修改ArticlesController.php文件中的publicfunctioncreate(){//}为publicfunctioncreate(){returnView::make('articles.create');}在PHP中,方法分为public、private和protected在这种情况下,只有公共方法可以用作控制器操作。现在刷新http://localhost:8000/article...,你会看到一个新的错误:这个错误的原因是Laravel希望这样的常规操作有一个相应的视图来显示内容。当没有视图可用时,Laravel会抛出错误。新建文件app/views/articles/create.blade.php,写入如下代码:

NewArticle

再次刷新http://localhost:8000/article...,可以看到页面显示标题。现在路由、控制器、动作和视图都可以正常工作了。下一步是编写用于创建新文章的表单。2.第一个表单要在模板中编写一个表单,可以使用“FormBuilder”。Laravel中常用的表单构建器是Form。在app/views/articles/create.blade.php文件中添加如下代码:现在刷新页面,你会看到上面代码生成的表单。在Laravel中编写表单就是这么简单!在Form方法的块中,Form::text创建了两个标签和两个文本字段,一个用于文章标题,一个用于文章内容。最后,Form::submit创建了一个提交按钮。将app/views/articles/create.blade.php文件中的Form::open修改为:{{Form::open(array('url'=>'articles'))}}在这里,我们把url参数的值设置为文章。对应的地址是/articels,默认情况下,这个表单会向这个路由发起POST请求。此路由对应于ArticlesController控制器的存储操作。表单写好了,路由也定义好了。现在您可以填写表格并单击提交按钮来创建新文章。3.创建一个文章提交表单,你会看到一个白屏。暂时不要管这个错误。store动作的作用是将新文章保存到数据库中。提交表单时,其中的字段将作为参数传递给Laravel。这些参数可用于控制器的动作,以完成指定的操作。要查看这些参数的内容,可以将store动作改为:publicfunctionstore(){dd(Input::all());}dd函数是Laravel内置的打印输出函数,而Input::all()获取所有发出请求时传入的输入数据。如果现在再次提交表单,您将不会再看到白屏错误,但会看到类似如下的文本:存储操作显示表单提交的参数。但是这样做是没有用的,看到参数怎么办,什么都没有。4.创建Article模型在Laravel中,模型的名字是单数,对应的数据表的名字是复数。创建app/models/Article.php并编写以下代码:请注意,我们没有告诉EloquentArticle模型将使用哪个数据库表。如果不指定,系统默认自动对应名称为“类名的小写复数形式”的数据库表。所以,在上面的例子中,Eloquent会假定Article会将数据存储在articles数据库表中。5.运行迁移使用ArtisanCLI的migrate:make命令创建迁移文件:$phpartisanmigrate:makecreate_articles_table--create=articles迁移文件将在app/database/migrations目录中创建,文件名将包含时间戳,用于确定执行迁移时的顺序。app/database/migrations/20140903084339createarticlestable.php(你的migration文件名可能有点不同)文件内容如下:修改里面的创建代码为:本次migration中定义了一个名为up的方法,migration执行时运行。up方法中定义的操作通过down方法是可逆的,Laravel知道如何撤销这个迁移操作。运行迁移后,将创建articles表,以及一个字符串字段和一个文本字段。还创建了两个时间戳字段来跟踪记录的创建时间和更新时间。然后,使用Artisan命令运行迁移:$phpartisanmigrateLaravel将执行迁移并告诉您文章表已创建。迁移表创建成功。已迁移:20140903084339createarticlestable6。将数据保存在控制器中并返回到ArticlesController控制器。我们需要修改store动作,使用Article模型将数据存入数据库。打开app/controllers/ArticlesController.php文件,修改store动作如下:同时在app/models/Article.php中添加:protected$fillable=array('title','text');fillable属性允许在动作中调用模型的create方法使用title和text属性。再次访问http://localhost:8000/article...,填写表单,离创建文章仅一步之遥。7.显示文章和之前一样,我们需要在app/controllers/ArticlesController.php文件中更改showaction和对应的view文件。然后,新建一个app/views/articles/show.blade.php文件,写入如下代码:经过以上修改后,就可以真正新建一篇文章了。访问http://localhost:8000/article...并亲自尝试。8.列出所有文章我们还需要列出所有文章。对应的路由是:GET|HEAD文章|文章索引|ArticlesController@index在app/controllers/ArticlesController.php文件中,修改ArticlesControllercontrollerindexaction:然后写这个action的view,保存为app/views/articles/index.blade.php:现在访问http://localhost:8000/articles你会看到一个已发表文章的列表。9、添加链接至此,我们就可以创建、展示、列出文章了。下面我们添加一些链接到这些页面。打开app/views/welcome/index.blade.php文件,添加:{{link_to_route('articles.index','MyBlog')}}linktoroute是Laravel内置的视图帮助方法之一,根据提供文本和地址创建超链接。上面代码中,地址为文章列表页。接下来添加指向其他页面的链接。首先在app/views/articles/index.blade.php中的标签前添加“NewArticle”链接:{{link_to_route('articles.create','Newarticle')}}点击这个链接后,会将您重定向到创建新文章的表单页面。然后在app/views/articles/create.blade.php中添加一个链接,在表单下方,回到索引操作:{{link_to_route('articles.index','Back')}}最后,在app/views/在articles/show.blade.php模板中添加一个链接返回index动作,方便用户查看文章后返回文章列表页面:{{link_to_route('articles.index','Back')}}10。添加数据验证在app/controllers/ArticlesController.php文件中,修改ArticlesController控制器store动作:然后修改app/views/articles/create.blade.php添加:访问http://localhost:8000/article...,尝试发布一篇没有标题的文章,您会看到一条有用的错误消息。11、更新文章我们已经讲解了CRUD中CR的两个操作。输入下面的U部分并更新文章。首先,更改ArticlesController中的编辑操作:像NewArticle这样的表单将添加到视图中。新建app/views/articles/edit.blade.php文件,写入如下代码:这里表单指向更新动作方法:put(patch)选项告诉Laravel在提交这个时使用PUT方法发送请求形式。根据REST架构,更新资源时使用HTTPPUT方法。然后,更新app/controllers/ArticlesController.php中的更新动作:最后,我们要在文章列表页面的每篇文章之后添加一个链接到编辑动作。打开app/views/articles/index.blade.php文件并在“Show”链接后添加“Edit”链接:我们还将在app/views/articles/show的底部添加“Edit”链接。blade.phptemplate:{{link_to_route('articles.index','Back')}}|{{link_to_route('articles.edit','Edit',$article->id)}}12.使用局部视图删除视图中的重复下面的代码使用分部视图来删除两个视图中的重复代码。创建一个新的app/views/notifications.blade.php文件并编写以下代码:让我们修改app/views/articles/creat.blade.php和edit.blade.php视图,使用新创建的分部视图,并将上面的代码里面全部删除,替换为:@include('notifications')13.删除文章现在介绍CRUD中的D,从数据库中删除文章。按照REST架构的约定,删除文章的路由是:DELETEarticles/{articles}|文章.销毁|ArticlesController@destroy删除资源时使用DELETE请求。如果你仍然使用GET请求,你可以构造一个如下所示的恶意地址:看看这只猫!要删除资源,请使用DELETE方法,路由会将请求发送到app/controllers/ArticlesController.php中的destroy操作。修改销毁动作:要从数据库中删除一条记录,调用模型对象的销毁方法。最后,在索引动作模板(app/views/articles/index.blade.php)中添加一个“销毁”链接:恭喜,现在你可以创建、显示、列出、更新和删除文章了,Laravel就完成了第一次实践,祝你早日适应ThinkSNS+的技术框架,更多内容请访问www.thinksns.com