学习 Laravel - Web 开发实战入门笔记(1)

学习 Laravel - Web 开发实战入门笔记(1)
  本笔记根据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

推荐阅读