本笔记根据LearnKu教程边学边记而成。该教程以搭建出一个类似微博的Web应用为最终成果,在过程中学习Laravel的相关知识。
准备开发环境
原教程使用官方推荐的Homestead开发环境。由于最近Docker开始流行,并且也有相应的Laravel对应的容器。所以本文以Laradock作为开发环境。
安装Laradock
克隆Laradock仓库到本地。
gitclonehttps://github.com/laradock/laradock.git
最终文件夹结构应该像这样:
+laradock
+project-z
配置Laradock
复制配置文件
bashcdlaradockcpenv-example.env#复制配置文件
进入Workspace
bash#运行Laradockdocker-composeup-dnginx#进入LaradockWorkspacedocker-composeexec--user=laradockworkspacebash#ForGitBashwinptydocker-composeexec--user=laradockworkspacebash
配置国内加速镜像
#Workspace
composerconfig-gl#查看composer设置
composerconfig-grepo.packagistcomposerhttps://mirrors.aliyun.com/composer/#设置国内加速镜像
构建页面
创建应用
#Workspace
composercreate-projectlaravel/laravelweibo--prefer-dist"5.8.*"
配置Nginx域名
cpnginx/sites/laravel.conf.examplenginx/sites/weibo.conf
修改新复制出的配置文件里的路径为将要创建的项目路径。
修改Host
编辑C:/Windows/System32/Drivers/etc/hosts
增加一条127.0.0.1weibo.test
.env文件
.env文件包含了项目的一些设置,我们进行一些修改。
APP_NAME=Weibo
APP_ENV=local
APP_KEY=base64:nsvnM5l0N5cOzT/dFqfUoYlkYffhDPnKPuYU4AWMdPc=
APP_DEBUG=true
APP_URL=http://weibo.test
为了方便,我们在本地使用sqlite数据库。
注释掉原有DB相关设置,添加下面内容
DB_CONNECTION=sqlite
DB_DATABASE=/database/database.sqlite
并且创建相应数据库文件
touchdatabase/database.sqlite
使用Git管理代码
cdweibo
gitinit
gitadd-A
gitcommit-m"Initialcommit"
上传到Gitee
gitremoteaddorigingit@gitee.com:codingbit/weibo.git
gitpush-uoriginmaster
使用Heroku部署应用
需要先安装heroku-cli工具。
创建HerokuApp
herokucreate
配置Procfile文件:
echoweb:vendor/bin/heroku-php-apache2public/>Procfile
gitadd-A
gitcommit-m"ProcfileforHeroku"
gitpush
herokubuildpacks:setheroku/php
生成AppKey
#Workspace
$phpartisankey:generate--show
base64:ta1aE+E8kuyDFlURbUrHEtL4HY71WtoffyNgUKldMWw=
#Host
herokuconfig:setAPP_KEY=base64:ta1aE+E8kuyDFlURbUrHEtL4HY71WtoffyNgUKldMWw=
推送到Heroku上
gitpushherokumaster
上传成功,访问地址https://cbit-weibo.herokuapp.com/即可看到效果。
统一代码风格
通过编辑器的EditorConfig插件,统一代码风格。
.editorconfig
root=true
[*]
charset=utf-8
end_of_line=lf
insert_final_newline=true
indent_style=space
indent_size=4
trim_trailing_whitespace=true
[*.md]
trim_trailing_whitespace=false
[*.yml]
indent_size=2
[*.{js,html,blade.php,css,scss}]
indent_style=space
indent_size=2
静态页面
架子搭好了,开始学习创建基础静态页面。
新建分支
gitcheckoutmaster
gitcheckout-bstatic-pages
移除无用视图
默认的welcome.blade.php视图文件,没有用,删掉。
rmresources/views/welcome.blade.php
配置路由
routes/web.php
<?php
Route::get('/','StaticPagesController@home');
Route::get('/help','StaticPagesController@help');
Route::get('/about','StaticPagesController@about');
get方法有两个参数:1.访问的URL;2.操作的控制器及对应的方法
在Laravel中我们较为常用的几个基本的HTTP操作分别为GET、POST、PATCH、DELETE。
GET常用于页面读取
POST常用于数据提交
PATCH常用于数据更新
DELETE常用于数据删除
其中,PATCH和DELETE是不被浏览器所支持的,我们可以通过在提交表单中做一些手脚,让服务器以为这两个动作是从浏览器中发出的一样。
生成静态页面控制器
生成静态页面控制器:
phpartisanmake:controllerStaticPagesController
添加三个方法
classStaticPagesControllerextendsController
{
publicfunctionhome()
{
return'主页';
}
publicfunctionhelp()
{
return'帮助页';
}
publicfunctionabout()
{
return'关于页';
}
}
添加静态页面视图
控制器中渲染视图,需要用到view方法,view方法接收两个参数,第一个参数是视图的路径名称,第二个参数是与视图绑定的数据,第二个参数为可选参数。
app/Http/Controllers/StaticPagesController.php
classStaticPagesControllerextendsController
{
publicfunctionhome()
{
returnview('static_pages/home');
}
publicfunctionhelp()
{
returnview('static_pages/help');
}
publicfunctionabout()
{
returnview('static_pages/about');
}
}
默认情况下,所有的视图文件都存放在resources/views文件夹下。
下面创建三个视图。
resources/views/static_pages/home.blade.php
<!DOCTYPEhtml>
<html>
<head>
<title>WeiboApp</title>
</head>
<body>
<h1>主页</h1>
</body>
</html>
resources/views/static_pages/help.blade.php
<!DOCTYPEhtml>
<html>
<head>
<title>WeiboApp</title>
</head>
<body>
<h1>帮助页</h1>
</body>
</html>
resources/views/static_pages/about.blade.php
<!DOCTYPEhtml>
<html>
<head>
<title>WeiboApp</title>
</head>
<body>
<h1>关于页</h1>
</body>
</html>
使用通用视图
使用通用视图避免代码重复的问题。
resources/views/layouts/default.blade.php
<!DOCTYPEhtml>
<html>
<head>
<title>@yield('title','WeiboApp')-Laravel新手入门教程</title>
</head>
<body>
@yield('content')
</body>
</html>
Laravel的Blade模板支持继承,这意味多个子视图可以共用父视图提供的视图模板。
修改视图模板。
resources/views/static_pages/home.blade.php
@extends('layouts.default')
@section('content')
<h1>主页</h1>
@stop
resources/views/static_pages/help.blade.php
@extends('layouts.default')
@section('title','帮助')
@section('content')
<h1>帮助页</h1>
@stop
resources/views/static_pages/about.blade.php
@extends('layouts.default')
@section('title','关于')
@section('content')
<h1>关于页</h1>
@stop
Git代码版本控制
接着让我们将本次更改纳入版本控制中:
gitadd-A
gitcommit-m"基础页面"
提交代码
将Git切换到master分支,并合并static-pages分支上的修改:
gitcheckoutmaster
gitmergestatic-pages
最后将代码推送到GitHub和Heroku上:
gitpush#推送到Gitee
gitpushherokumaster#上线到Heorku
|