Laravel5.7框架安裝與使用學(xué)習(xí)筆記圖文詳解
本文實(shí)例講述了Laravel5.7框架安裝與使用。分享給大家供大家參考,具體如下:
【安裝Laravel】
Composer安裝:
composer create-project --prefer-dist laravel/laravel
目錄結(jié)構(gòu):

網(wǎng)站根目錄指向了/public,訪問報(bào)錯(cuò):

原因是并沒有vendor這個(gè)文件夾,看了這篇博客http://www.dhdzp.com/article/158896.htm
在根目錄執(zhí)行 composer update,下載了一大堆東西
完事訪問一片空白,錯(cuò)誤500......然后各種百度,各種設(shè)置目錄權(quán)限:
chmod -R 777 storage/ chmod -R 777 bootstrap/cache/ chmod -R 777 vendor/
還是不行,最后查看了/storage/logs下面的日志,有報(bào)錯(cuò):

少了這么一個(gè)key,再次百度,我的做法是:把根目錄.env.example這個(gè)隱藏文件重命名為.env

然后根目錄執(zhí)行 php artisan key:generate

(參考博客:https://blog.csdn.net/qq_39479575/article/details/78495703)
終于打開了這個(gè)頁面,真不容易,明天我得吃個(gè)雞腿慶祝一下......

使用 php artisan --version 命令查看安裝的Laravel版本,是最新的5.7版本 :
![]()

【一些配置】
Laravel 所有的配置文件都放在根目錄 /config 下面:

修改app.php,開啟debug:

設(shè)置時(shí)區(qū)為Asia/Shanghai:

控制器目錄:

視圖層目錄:

【初識路由】
與thinkphp相比,Laravel不能通過 /模塊名/控制器名/操作名 直接訪問web界面
每一個(gè)web界面都必須在 /routes/web.php 中定義一條路由規(guī)則:

默認(rèn)路由配置的意思是:訪問根目錄(網(wǎng)站首頁),渲染視圖層的"歡迎"頁面:
Route::get('/', function () {
return view('welcome');
});
在控制器目錄新建了一個(gè)IndexController.php:
<?php
namespace App\Http\Controllers;
class IndexController extends Controller
{
public function index(){
return '這是首頁';
}
}
修改首頁路由:
Route::get('/', 'IndexController@index');
再次訪問首頁:

項(xiàng)目通常會(huì)區(qū)分前后臺,在tp中可以通過劃分模塊來實(shí)現(xiàn),Laravel中同樣可以用這個(gè)原理
在控制器目錄下新建了兩個(gè)文件夾:Index、Admin,分別作為前、后臺控制器模塊:

以后臺Admin為例,在下面新建兩個(gè)控制器Index和User
手動(dòng)創(chuàng)建太low了,Laravel使用命令行創(chuàng)建控制器、Model,命名空間都自動(dòng)幫你寫好......
php artisan make:controller Admin/IndexController

IndexController.php:
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class IndexController extends Controller
{
public function index(){
return '后臺首頁';
}
}
UserController.php:
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
public function userlist(){
return '后臺用戶列表頁';
}
public function useradd(){
return '后臺用戶添加';
}
}
在設(shè)置路由的時(shí)候,可以通過設(shè)置路由組group,共享路由屬性。如:命名空間namespace、路由前綴prefix、中間件middleware等。
路由組規(guī)則設(shè)置如下:
//在App\Http\Controllers\Admin命名空間下的控制器
Route::namespace('Admin')->group(function () {
//后臺首頁
Route::group(['prefix' => 'admin/index'], function () {
// 首頁顯示
Route::get('index', 'IndexController@index');
});
//后臺用戶
Route::group(['prefix' => 'admin/user'], function () {
//用戶列表
Route::get('userlist', 'UserController@userlist');
//用戶添加
Route::get('useradd', 'UserController@useradd');
});
});
這樣就可以實(shí)現(xiàn)類似tp那樣的 /模塊名/控制器名/操作名 的訪問方式:


(當(dāng)然路由前綴prefix和路由名稱可以隨意定義,不一定要遵循tp的寫法,這里只是為了清晰明了)
【中間件】
Laravel的中間件在 /app/Http/Middleware 目錄下,用于過濾HTTP請求,可以做一些字段驗(yàn)證、身份驗(yàn)證、CSRF 防護(hù)等等......
Laravel自帶了一些中間件:

例:設(shè)置一個(gè)CheckLog中間件,判斷用戶是否登錄,如果登錄了可以看用戶列表頁,否則跳轉(zhuǎn)到首頁
執(zhí)行生成中間件命令:(這里和控制器一樣采用前后臺目錄分開放的方式)
php artisan make:middleware Admin/CheckLog
![]()

CheckLog.php中間件內(nèi)容:
<?php
namespace App\Http\Middleware\Admin;
use Illuminate\Http\Request;
use Closure;
class CheckLog
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$mid = $request->cookie('mid');
if(empty($mid)){
return redirect('admin/index/index');
}
//處理請求之前執(zhí)行動(dòng)作
return $next($request);
}
}
寫好中間件之后需要注冊中間件,在 /app/Http/Kernel.php 里面注冊

目的是給路由分配中間件,在 routeMiddleware 屬性里添加:
'admin.checklog' => \App\Http\Middleware\Admin\CheckLog::class,

修改/routes/web.php路由配置,給后臺用戶路由組添加中間件屬性:
//后臺用戶
Route::group(['prefix' => 'admin/user' , 'middleware' => 'admin.checklog'], function () {
//用戶列表
Route::get('userlist', 'UserController@userlist');
//用戶添加
Route::get('useradd', 'UserController@useradd');
});
此時(shí)訪問用戶列表頁,會(huì)先走中間件判斷登錄狀態(tài),沒登錄跳轉(zhuǎn)到首頁:

(Kernel.php中其他中間件屬性:全局中間件$middleware、中間件組$middlewareGroups、中間件執(zhí)行順序$middlewarePriority)
如果不給路由設(shè)置中間件屬性,也可以在控制器的構(gòu)造方法里設(shè)置中間件,可以指定或排除具體某一個(gè)操作,示例如下:
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
public function __construct(){
//全部操作生效
$this->middleware('admin.checklog');
//僅xxx操作生效
// $this->middleware('admin.checklog')->only('userlist');
//除xxx操作生效
// $this->middleware('admin.checklog')->except('useradd');
}
public function userlist(){
return '后臺用戶列表頁';
}
public function useradd(){
return '后臺用戶添加';
}
}
【請求 request】
獲得請求,首先需要引入 Illuminate\Http\Request 類
基本使用:
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class IndexController extends Controller
{
public function index(Request $request){
$uri = '請求路徑:'.$request->path();
$url = '請求URL:'.$request->url();
$method = '請求方法:'.$request->method();
$name = '獲取請求參數(shù):'.$request->input('name');
$mid = '獲取cookie:'.$request->cookie('mid');
$key = '獲取session:'.$request->session()->get('key');
$file = '獲取上傳文件:'.$request->file('photo');
dump($uri);
dump($url);
dump($method);
dump($name);
dump($mid);
dump($file);
//驗(yàn)證請求路徑
//if ($request->is('admin/*')) {
//}
//驗(yàn)證請求方法
//if ($request->isMethod('post')) {
//}
}
}

【分配數(shù)據(jù) 渲染視圖】
以后臺首頁視圖 /admin/index/index 為例:

控制器使用 view() 函數(shù)渲染視圖,同時(shí)分配數(shù)據(jù):
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
class IndexController extends Controller
{
public function index(){
//分配一個(gè)字段
// $name = 'lws';
// return view('admin.index.index')->with('name',$name);
//分配數(shù)組
$data = ['name' => 'lws','sex' => 'nan'];
return view('admin.index.index', $data);
//也可以使用php的compact函數(shù)傳值
//$name = 'lws';
//$sex = 'nan';
//return view('admin.index.index',compact('name','sex'));
}
}
視圖層使用雙大括號 {{ }} 獲得數(shù)據(jù):
姓名:{{$name}}<br/>
性別:{{$sex}}

{{ $test }} 會(huì)自動(dòng)調(diào)用 PHP 的 htmlspecialchars()函數(shù)防止 XSS 攻擊,如果不需要轉(zhuǎn)義可使用 {!! $test !!} ,例如富文本格式。
更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進(jìn)階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家基于Laravel框架的PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
php實(shí)現(xiàn)utf-8轉(zhuǎn)unicode函數(shù)分享
這篇文章主要介紹了php實(shí)現(xiàn)utf-8轉(zhuǎn)unicode函數(shù)分享,需要的朋友可以參考下2015-01-01
ThinkPHP3.2.1圖片驗(yàn)證碼實(shí)現(xiàn)方法
這篇文章主要介紹了ThinkPHP3.2.1圖片驗(yàn)證碼實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了thinkPHP3.2.1生成圖片驗(yàn)證碼過程中遇到的問題及相應(yīng)的解決方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08
Linux下從零開始安裝配置Nginx服務(wù)器+PHP開發(fā)環(huán)境
這篇文章主要介紹了Linux下從零開始安裝配置Nginx服務(wù)器+PHP開發(fā)環(huán)境的教程,文中采用的是最主流的FastCGI連接方法,需要的朋友可以參考下2015-12-12
PHP輸出英文時(shí)間日期的安全方法(RFC 1123格式)
這篇文章主要介紹了PHP輸出英文時(shí)間日期的安全方法,本文所指的英文時(shí)間日期為RFC 1123格式,總結(jié)了一個(gè)不受setlocale影響的函數(shù)gmdate,需要的朋友可以參考下2014-06-06
微信小程序結(jié)合ThinkPHP5授權(quán)登陸后獲取手機(jī)號
現(xiàn)在很多小程序都需要獲取用戶的手機(jī)號以方便登錄,本文就詳細(xì)的介紹一下微信小程序結(jié)合ThinkPHP5授權(quán)登陸后獲取手機(jī)號,感興趣的可以了解一下2021-11-11
ThinkPHP框架實(shí)現(xiàn)的MySQL數(shù)據(jù)庫備份功能示例
這篇文章主要介紹了ThinkPHP框架實(shí)現(xiàn)的MySQL數(shù)據(jù)庫備份功能,結(jié)合實(shí)例形式分析了thinkPHP導(dǎo)出mysql數(shù)據(jù)庫相關(guān)操作實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2018-05-05
thinkPHP5框架實(shí)現(xiàn)基于ajax的分頁功能示例
這篇文章主要介紹了thinkPHP5框架實(shí)現(xiàn)基于ajax的分頁功能,結(jié)合實(shí)例形式分析了thinkPHP5框架上進(jìn)行ajax分頁操作的具體步驟、實(shí)現(xiàn)代碼與相關(guān)操作方法,需要的朋友可以參考下2018-06-06

