Laravel5.7框架安裝與使用學(xué)習(xí)筆記圖文詳解
本文實(shí)例講述了Laravel5.7框架安裝與使用。分享給大家供大家參考,具體如下:
【安裝Laravel】
Composer安裝:
composer create-project --prefer-dist laravel/laravel
目錄結(jié)構(gòu):
網(wǎng)站根目錄指向了/public,訪問(wèn)報(bào)錯(cuò):
原因是并沒(méi)有vendor這個(gè)文件夾,看了這篇博客http://chabaoo.cn/article/158896.htm
在根目錄執(zhí)行 composer update,下載了一大堆東西
完事訪問(wèn)一片空白,錯(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è)頁(yè)面,真不容易,明天我得吃個(gè)雞腿慶祝一下......
使用 php artisan --version 命令查看安裝的Laravel版本,是最新的5.7版本 :
【一些配置】
Laravel 所有的配置文件都放在根目錄 /config 下面:
修改app.php,開啟debug:
設(shè)置時(shí)區(qū)為Asia/Shanghai:
控制器目錄:
視圖層目錄:
【初識(shí)路由】
與thinkphp相比,Laravel不能通過(guò) /模塊名/控制器名/操作名 直接訪問(wèn)web界面
每一個(gè)web界面都必須在 /routes/web.php 中定義一條路由規(guī)則:
默認(rèn)路由配置的意思是:訪問(wèn)根目錄(網(wǎng)站首頁(yè)),渲染視圖層的"歡迎"頁(yè)面:
Route::get('/', function () { return view('welcome'); });
在控制器目錄新建了一個(gè)IndexController.php:
<?php namespace App\Http\Controllers; class IndexController extends Controller { public function index(){ return '這是首頁(yè)'; } }
修改首頁(yè)路由:
Route::get('/', 'IndexController@index');
再次訪問(wèn)首頁(yè):
項(xiàng)目通常會(huì)區(qū)分前后臺(tái),在tp中可以通過(guò)劃分模塊來(lái)實(shí)現(xiàn),Laravel中同樣可以用這個(gè)原理
在控制器目錄下新建了兩個(gè)文件夾:Index、Admin,分別作為前、后臺(tái)控制器模塊:
以后臺(tái)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 '后臺(tái)首頁(yè)'; } }
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 '后臺(tái)用戶列表頁(yè)'; } public function useradd(){ return '后臺(tái)用戶添加'; } }
在設(shè)置路由的時(shí)候,可以通過(guò)設(shè)置路由組group,共享路由屬性。如:命名空間namespace、路由前綴prefix、中間件middleware等。
路由組規(guī)則設(shè)置如下:
//在App\Http\Controllers\Admin命名空間下的控制器 Route::namespace('Admin')->group(function () { //后臺(tái)首頁(yè) Route::group(['prefix' => 'admin/index'], function () { // 首頁(yè)顯示 Route::get('index', 'IndexController@index'); }); //后臺(tái)用戶 Route::group(['prefix' => 'admin/user'], function () { //用戶列表 Route::get('userlist', 'UserController@userlist'); //用戶添加 Route::get('useradd', 'UserController@useradd'); }); });
這樣就可以實(shí)現(xiàn)類似tp那樣的 /模塊名/控制器名/操作名 的訪問(wèn)方式:
(當(dāng)然路由前綴prefix和路由名稱可以隨意定義,不一定要遵循tp的寫法,這里只是為了清晰明了)
【中間件】
Laravel的中間件在 /app/Http/Middleware 目錄下,用于過(guò)濾HTTP請(qǐng)求,可以做一些字段驗(yàn)證、身份驗(yàn)證、CSRF 防護(hù)等等......
Laravel自帶了一些中間件:
例:設(shè)置一個(gè)CheckLog中間件,判斷用戶是否登錄,如果登錄了可以看用戶列表頁(yè),否則跳轉(zhuǎn)到首頁(yè)
執(zhí)行生成中間件命令:(這里和控制器一樣采用前后臺(tái)目錄分開放的方式)
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'); } //處理請(qǐng)求之前執(zhí)行動(dòng)作 return $next($request); } }
寫好中間件之后需要注冊(cè)中間件,在 /app/Http/Kernel.php 里面注冊(cè)
目的是給路由分配中間件,在 routeMiddleware 屬性里添加:
'admin.checklog' => \App\Http\Middleware\Admin\CheckLog::class,
修改/routes/web.php路由配置,給后臺(tái)用戶路由組添加中間件屬性:
//后臺(tái)用戶 Route::group(['prefix' => 'admin/user' , 'middleware' => 'admin.checklog'], function () { //用戶列表 Route::get('userlist', 'UserController@userlist'); //用戶添加 Route::get('useradd', 'UserController@useradd'); });
此時(shí)訪問(wèn)用戶列表頁(yè),會(huì)先走中間件判斷登錄狀態(tài),沒(méi)登錄跳轉(zhuǎn)到首頁(yè):
(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 '后臺(tái)用戶列表頁(yè)'; } public function useradd(){ return '后臺(tái)用戶添加'; } }
【請(qǐng)求 request】
獲得請(qǐng)求,首先需要引入 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 = '請(qǐng)求路徑:'.$request->path(); $url = '請(qǐng)求URL:'.$request->url(); $method = '請(qǐng)求方法:'.$request->method(); $name = '獲取請(qǐng)求參數(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)證請(qǐng)求路徑 //if ($request->is('admin/*')) { //} //驗(yàn)證請(qǐng)求方法 //if ($request->isMethod('post')) { //} } }
【分配數(shù)據(jù) 渲染視圖】
以后臺(tái)首頁(yè)視圖 /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')); } }
視圖層使用雙大括號(hào) {{ }} 獲得數(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ù)庫(kù)操作入門教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家基于Laravel框架的PHP程序設(shè)計(jì)有所幫助。
- 跟我學(xué)Laravel之安裝Laravel
- PHP開發(fā)框架laravel安裝與配置教程
- laravel安裝和配置教程
- centos 7系統(tǒng)下安裝laravel運(yùn)行環(huán)境的步驟詳解
- laravel 4安裝及入門圖文教程
- laravel安裝zend opcache加速器教程
- laravel5.5安裝jwt-auth 生成token令牌的示例
- Laravel框架路由配置總結(jié)、設(shè)置技巧大全
- 跟我學(xué)Laravel之路由
- Laravel 5框架學(xué)習(xí)之路由、控制器和視圖簡(jiǎn)介
- Laravel框架下載,安裝及路由操作圖文詳解
相關(guān)文章
php檢測(cè)用戶是否用手機(jī)(Mobile)訪問(wèn)網(wǎng)站的類
php檢測(cè)用戶是否用手機(jī)(Mobile)訪問(wèn)網(wǎng)站的類,引入這個(gè)類就可以直接使用了,程序基于MIT License協(xié)議開源,使用方法在下面2014-01-01如何通過(guò)PHP安裝數(shù)據(jù)庫(kù)并使數(shù)據(jù)初始化
這篇文章主要介紹了如何通過(guò)PHP安裝數(shù)據(jù)庫(kù)并使數(shù)據(jù)初始化,其實(shí)原理就是通過(guò)構(gòu)建原生SQL來(lái)創(chuàng)建并初始化數(shù)據(jù)庫(kù),連接數(shù)據(jù)庫(kù)、創(chuàng)建數(shù)據(jù)庫(kù)、使用數(shù)據(jù)庫(kù)、創(chuàng)建數(shù)據(jù)表、新增數(shù)據(jù)、關(guān)閉連接,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-03-03CodeIgniter針對(duì)lighttpd服務(wù)器URL重寫的方法
這篇文章主要介紹了CodeIgniter針對(duì)lighttpd服務(wù)器URL重寫的方法,涉及l(fā)ighttpd服務(wù)器配置及URL配置規(guī)則的相關(guān)技巧,需要的朋友可以參考下2015-06-06Yii2針對(duì)指定url的生成及圖片等的引入方法小結(jié)
這篇文章主要介紹了Yii2針對(duì)指定url的生成及圖片等的引入方法,針對(duì)常用的URL格式及圖片路徑操作結(jié)合實(shí)例進(jìn)行了對(duì)比分析,需要的朋友可以參考下2016-07-07laravel 修改記住我功能的cookie保存時(shí)間的方法
今天小編就為大家分享一篇laravel 修改記住我功能的cookie保存時(shí)間的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10