学习 Laravel - Web 开发实战入门笔记(1)
本笔记根据 LearnKu 教程边学边记而成。该教程以搭建出一个类似微博的Web 应用为最终成果,在过程中学习 Laravel 的相关知识。
准备开发环境
原教程使用官方推荐的 Homestead 开发环境。由于最近 Docker 开始流行,并且也有相应的 Laravel 对应的容器。所以本文以 Laradock 作为开发环境。
安装 Laradock
克隆 Laradock 仓库到本地。
git clone https://github.com/laradock/laradock.git
最终文件夹结构应该像这样:
+ laradock
+ project-z
配置 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 工具。
创建 Heroku App
heroku create
配置
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
生成 App Key
#Workspace
$ php artisan key:generate --show
base64:ta1aE+E8kuyDFlURbUrHEtL4HY71WtoffyNgUKldMWw=
#Host
heroku config:set APP_KEY=base64:ta1aE+E8kuyDFlURbUrHEtL4HY71WtoffyNgUKldMWw=
推送到 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)的更多相关文章
- Laravel 教程 - Web 开发实战入门 ( Laravel 5.5 )购买链接
Laravel 教程 - Web 开发实战入门 ( Laravel 5.5 )购买链接: 推荐给你高品质的实战课程 https://laravel-china.org/courses?rf=158 ...
- 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记
近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...
- 《Java web 开发实战经典》读书笔记
去年年末,也就是大四上学期快要结束的时候,当时保研的事情确定了下来,终于有了一些空闲的时间可以学点实用的技术. 之前做数据库课程设计的时候,也接触过java web的知识,当时做了一个卖二手书籍的网站 ...
- 《Java Web开发实战》——Java工程师必备干货教材
一年一度毕业季,又到了简历.offer漫天飞,失望与希望并存的时节.在IT行业,高校毕业生求职时,面临的第一道门槛就是技能与经验的考验,但学校往往更注重学生的理论知识,忽略了对学生实践能力的培养,因而 ...
- 《Python Web开发实战》|百度网盘免费下载|Python Web开发
<Python Web开发实战>|百度网盘免费下载|Python Web开发 提取码:rnz4 内容简介 这本书涵盖了Web开发的方方面面,可以分为如下部分: 1. 使用最新的Flask ...
- 《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发
<ASP.NET Core项目开发实战入门>从基础到实际项目开发部署带你走进ASP.NET Core开发. ASP.NET Core项目开发实战入门是基于ASP.NET Core 3.1 ...
- 「Android 开发」入门笔记
「Android 开发」入门笔记(界面编程篇) ------每日摘要------ DAY-1: 学习笔记: Android应用结构分析 界面编程与视图(View)组件 布局管理器 问题整理: Andr ...
- HTML5移动Web开发实战 PDF扫描版
<HTML5移动Web开发实战>提供了应对这一挑战的解决方案.通过阅读本书,你将了解如何有效地利用最新的HTML5的那些针对移动网站的功能,横跨多个移动平台.全书共分10章,从移动Web. ...
- iPhone与iPad开发实战读书笔记
iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...
随机推荐
- 用python实现的简易记牌器的demo
实现功能很简单: 初始时 1到10 以及 jkq各 4张,大小王 共两张 只要输入相应的牌号:1到10,例如 >>1 J.K.Q :例如>>j >> ...
- C#中如何去掉字"/0"
string str = "you/0are/0sweet/0"; str = str.replace("/0","")); 备忘一下
- matlab 计算灰度图像的一阶矩、二阶矩、三阶矩
一阶矩,定义了每个颜色分量的平均强度 二阶矩,反映待测区域颜色方差,即不均匀性 三阶矩,定义了颜色分量的偏斜度,即颜色的不对称性 close all;clear all;clc; ...
- Light Switching(SPOJ LITE)—— 线段树成段更新异或值
题目连接:http://www.spoj.com/problems/LITE/en/. 题意:有若干个灯泡,每次对一段操作,这一段原先是亮的,就关了:原先是关着的,就打开.询问某一段的打开的灯泡的个数 ...
- mac安装phpmysql
1.百度搜“phpmadmin”,还是一样,第二个因为是PC版本,不能用,点击第一个连接,去phpmyadmin的官网. 2.下载完毕后,进入到下载文件保存目录,双击压缩包,压缩包则会自动解压. 3. ...
- 前端知识点回顾——Javascript篇(四)
Symbol 为什么需要symbol ES5里面对象的属性名都是字符串,如果你需要使用一个别人提供的对象,你对这个对象有哪些属性也不是很清楚,但又想为这个对象新增一些属性,那么你新增的属性名就很可能和 ...
- go代理设置
在Go 1.13中,我们可以通过GOPROXY来控制代理,以及通过GOPRIVATE控制私有库不走代理. 设置GOPROXY代理: go env -w GOPROXY=https://goproxy. ...
- 图解Python 【第八篇】:网络编程-进程、线程和协程
本节内容一览图: 本章内容: 同步和异步 线程(线程锁.threading.Event.queue 队列.生产者消费者模型.自定义线程池) 进程(数据共享.进程池) 协程 一.同步和异步 你叫我去吃饭 ...
- LC 377. Combination Sum IV
Given an integer array with all positive numbers and no duplicates, find the number of possible comb ...
- nginx开启目录浏览,解决中文乱码问题
nginx开启目录浏览,解决中文乱码问题 方法如下: server { listen 80; #listen [::]:80; server_name gongzi.liwenhui.xin gz.l ...