本笔记根据 LearnKu 教程边学边记而成。该教程以搭建出一个类似微博的Web 应用为最终成果,在过程中学习 Laravel 的相关知识。

准备开发环境

原教程使用官方推荐的 Homestead 开发环境。由于最近 Docker 开始流行,并且也有相应的 Laravel 对应的容器。所以本文以 Laradock 作为开发环境。

安装 Laradock

  1. 克隆 Laradock 仓库到本地。

    git clone https://github.com/laradock/laradock.git

    最终文件夹结构应该像这样:

    + laradock
    + project-z
  2. 配置 Laradock

    复制配置文件

    cd laradock
    cp env-example .env #复制配置文件

    进入 Workspace

    #运行 Laradock
    docker-compose up -d nginx
    #进入 Laradock Workspace

docker-compose exec --user=laradock workspace bash

#For Git Bash

winpty docker-compose exec --user=laradock workspace bash

```

**配置国内加速镜像**

```bash
# Workspace
composer config -gl #查看composer设置
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ #设置国内加速镜像
```

构建页面

创建应用

# Workspace
composer create-project laravel/laravel weibo --prefer-dist "5.8.*"

配置 Nginx 域名

cp nginx/sites/laravel.conf.example nginx/sites/weibo.conf

修改新复制出的配置文件里的路径为将要创建的项目路径。

修改 Host

编辑 C:/Windows/System32/Drivers/etc/hosts

增加一条 127.0.0.1 weibo.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

并且创建相应数据库文件

touch database/database.sqlite

使用 Git 管理代码

cd weibo
git init
git add -A
git commit -m "Initial commit"

上传到 Gitee

git remote add origin git@gitee.com:codingbit/weibo.git
git push -u origin master

使用 Heroku 部署应用

需要先安装 heroku-cli 工具。

  1. 创建 Heroku App

    heroku create
  2. 配置 Procfile 文件:

    echo web: vendor/bin/heroku-php-apache2 public/ > Procfile
    git add -A
    git commit -m "Procfile for Heroku"
    git push
    heroku buildpacks:set heroku/php
  3. 生成 App Key

    #Workspace
    $ php artisan key:generate --show
    base64:ta1aE+E8kuyDFlURbUrHEtL4HY71WtoffyNgUKldMWw=
    #Host
    heroku config:set APP_KEY=base64:ta1aE+E8kuyDFlURbUrHEtL4HY71WtoffyNgUKldMWw=
  4. 推送到 Heroku 上

    git push heroku master

上传成功,访问地址 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

静态页面

架子搭好了,开始学习创建基础静态页面。

新建分支

git checkout master
git checkout -b static-pages

移除无用视图

默认的 welcome.blade.php 视图文件,没有用,删掉。

rm resources/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 是不被浏览器所支持的,我们可以通过在提交表单中做一些手脚,让服务器以为这两个动作是从浏览器中发出的一样。

生成静态页面控制器

生成静态页面控制器:

php artisan make:controller StaticPagesController

添加三个方法

class StaticPagesController extends Controller
{
public function home()
{
return '主页';
} public function help()
{
return '帮助页';
} public function about()
{
return '关于页';
}
}

添加静态页面视图

控制器中渲染视图,需要用到 view 方法,view 方法接收两个参数,第一个参数是视图的路径名称,第二个参数是与视图绑定的数据,第二个参数为可选参数。

app/Http/Controllers/StaticPagesController.php

class StaticPagesController extends Controller
{
public function home()
{
return view('static_pages/home');
} public function help()
{
return view('static_pages/help');
} public function about()
{
return view('static_pages/about');
}
}

默认情况下,所有的视图文件都存放在 resources/views 文件夹下。

下面创建三个视图。

resources/views/static_pages/home.blade.php

<!DOCTYPE html>
<html>
<head>
<title>Weibo App</title>
</head>
<body>
<h1>主页</h1>
</body>
</html>

resources/views/static_pages/help.blade.php

<!DOCTYPE html>
<html>
<head>
<title>Weibo App</title>
</head>
<body>
<h1>帮助页</h1>
</body>
</html>

resources/views/static_pages/about.blade.php

<!DOCTYPE html>
<html>
<head>
<title>Weibo App</title>
</head>
<body>
<h1>关于页</h1>
</body>
</html>

使用通用视图

使用通用视图避免代码重复的问题。

resources/views/layouts/default.blade.php

<!DOCTYPE html>
<html>
<head>
<title>@yield('title', 'Weibo App') - 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 代码版本控制

接着让我们将本次更改纳入版本控制中:

git add -A
git commit -m "基础页面"

提交代码

将 Git 切换到 master 分支,并合并 static-pages 分支上的修改:

git checkout master
git merge static-pages

最后将代码推送到 GitHub 和 Heroku 上:

git push                     # 推送到 Gitee
git push heroku master # 上线到 Heorku

学习 Laravel - Web 开发实战入门笔记(1)的更多相关文章

  1. Laravel 教程 - Web 开发实战入门 ( Laravel 5.5 )购买链接

      Laravel 教程 - Web 开发实战入门 ( Laravel 5.5 )购买链接: 推荐给你高品质的实战课程 https://laravel-china.org/courses?rf=158 ...

  2. 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记

    近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...

  3. 《Java web 开发实战经典》读书笔记

    去年年末,也就是大四上学期快要结束的时候,当时保研的事情确定了下来,终于有了一些空闲的时间可以学点实用的技术. 之前做数据库课程设计的时候,也接触过java web的知识,当时做了一个卖二手书籍的网站 ...

  4. 《Java Web开发实战》——Java工程师必备干货教材

    一年一度毕业季,又到了简历.offer漫天飞,失望与希望并存的时节.在IT行业,高校毕业生求职时,面临的第一道门槛就是技能与经验的考验,但学校往往更注重学生的理论知识,忽略了对学生实践能力的培养,因而 ...

  5. 《Python Web开发实战》|百度网盘免费下载|Python Web开发

    <Python Web开发实战>|百度网盘免费下载|Python Web开发 提取码:rnz4 内容简介 这本书涵盖了Web开发的方方面面,可以分为如下部分: 1. 使用最新的Flask ...

  6. 《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发

    <ASP.NET Core项目开发实战入门>从基础到实际项目开发部署带你走进ASP.NET Core开发. ASP.NET Core项目开发实战入门是基于ASP.NET Core 3.1 ...

  7. 「Android 开发」入门笔记

    「Android 开发」入门笔记(界面编程篇) ------每日摘要------ DAY-1: 学习笔记: Android应用结构分析 界面编程与视图(View)组件 布局管理器 问题整理: Andr ...

  8. HTML5移动Web开发实战 PDF扫描版​

    <HTML5移动Web开发实战>提供了应对这一挑战的解决方案.通过阅读本书,你将了解如何有效地利用最新的HTML5的那些针对移动网站的功能,横跨多个移动平台.全书共分10章,从移动Web. ...

  9. iPhone与iPad开发实战读书笔记

    iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...

随机推荐

  1. 用python实现的简易记牌器的demo

    实现功能很简单: 初始时 1到10 以及 jkq各 4张,大小王 共两张 只要输入相应的牌号:1到10,例如 >>1     J.K.Q :例如>>j     >> ...

  2. C#中如何去掉字"/0"

    string str = "you/0are/0sweet/0"; str = str.replace("/0","")); 备忘一下

  3. matlab 计算灰度图像的一阶矩、二阶矩、三阶矩

    ​   一阶矩,定义了每个颜色分量的平均强度 ​  二阶矩,反映待测区域颜色方差,即不均匀性 ​  三阶矩,定义了颜色分量的偏斜度,即颜色的不对称性 close all;clear all;clc; ...

  4. Light Switching(SPOJ LITE)—— 线段树成段更新异或值

    题目连接:http://www.spoj.com/problems/LITE/en/. 题意:有若干个灯泡,每次对一段操作,这一段原先是亮的,就关了:原先是关着的,就打开.询问某一段的打开的灯泡的个数 ...

  5. mac安装phpmysql

    1.百度搜“phpmadmin”,还是一样,第二个因为是PC版本,不能用,点击第一个连接,去phpmyadmin的官网. 2.下载完毕后,进入到下载文件保存目录,双击压缩包,压缩包则会自动解压. 3. ...

  6. 前端知识点回顾——Javascript篇(四)

    Symbol 为什么需要symbol ES5里面对象的属性名都是字符串,如果你需要使用一个别人提供的对象,你对这个对象有哪些属性也不是很清楚,但又想为这个对象新增一些属性,那么你新增的属性名就很可能和 ...

  7. go代理设置

    在Go 1.13中,我们可以通过GOPROXY来控制代理,以及通过GOPRIVATE控制私有库不走代理. 设置GOPROXY代理: go env -w GOPROXY=https://goproxy. ...

  8. 图解Python 【第八篇】:网络编程-进程、线程和协程

    本节内容一览图: 本章内容: 同步和异步 线程(线程锁.threading.Event.queue 队列.生产者消费者模型.自定义线程池) 进程(数据共享.进程池) 协程 一.同步和异步 你叫我去吃饭 ...

  9. LC 377. Combination Sum IV

    Given an integer array with all positive numbers and no duplicates, find the number of possible comb ...

  10. nginx开启目录浏览,解决中文乱码问题

    nginx开启目录浏览,解决中文乱码问题 方法如下: server { listen 80; #listen [::]:80; server_name gongzi.liwenhui.xin gz.l ...