您好,登錄后才能下訂單哦!
小編給大家分享一下Laravel5.7框架安裝與使用的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
具體如下:
【安裝Laravel】
Composer安裝:
composer create-project --prefer-dist laravel/laravel
目錄結構:
網站根目錄指向了/public,訪問報錯:
原因是并沒有vendor這個文件夾,看了這篇博客https://www.jb51.net/article/158896.htm
在根目錄執行 composer update,下載了一大堆東西
完事訪問一片空白,錯誤500......然后各種百度,各種設置目錄權限:
chmod -R 777 storage/ chmod -R 777 bootstrap/cache/ chmod -R 777 vendor/
還是不行,最后查看了/storage/logs下面的日志,有報錯:
少了這么一個key,再次百度,我的做法是:把根目錄.env.example這個隱藏文件重命名為.env
然后根目錄執行 php artisan key:generate
(參考博客:https://blog.csdn.net/qq_39479575/article/details/78495703)
終于打開了這個頁面,真不容易,明天我得吃個雞腿慶祝一下......
使用 php artisan --version 命令查看安裝的Laravel版本,是最新的5.7版本 :
【一些配置】
Laravel 所有的配置文件都放在根目錄 /config 下面:
修改app.php,開啟debug:
設置時區為Asia/Shanghai:
控制器目錄:
視圖層目錄:
【初識路由】
與thinkphp相比,Laravel不能通過 /模塊名/控制器名/操作名 直接訪問web界面
每一個web界面都必須在 /routes/web.php 中定義一條路由規則:
默認路由配置的意思是:訪問根目錄(網站首頁),渲染視圖層的"歡迎"頁面:
Route::get('/', function () { return view('welcome'); });
在控制器目錄新建了一個IndexController.php:
<?php namespace App\Http\Controllers; class IndexController extends Controller { public function index(){ return '這是首頁'; } }
修改首頁路由:
Route::get('/', 'IndexController@index');
再次訪問首頁:
項目通常會區分前后臺,在tp中可以通過劃分模塊來實現,Laravel中同樣可以用這個原理
在控制器目錄下新建了兩個文件夾:Index、Admin,分別作為前、后臺控制器模塊:
以后臺Admin為例,在下面新建兩個控制器Index和User
手動創建太low了,Laravel使用命令行創建控制器、Model,命名空間都自動幫你寫好......
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 '后臺用戶添加'; } }
在設置路由的時候,可以通過設置路由組group,共享路由屬性。如:命名空間namespace、路由前綴prefix、中間件middleware等。
路由組規則設置如下:
//在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'); }); });
這樣就可以實現類似tp那樣的 /模塊名/控制器名/操作名 的訪問方式:
(當然路由前綴prefix和路由名稱可以隨意定義,不一定要遵循tp的寫法,這里只是為了清晰明了)
【中間件】
Laravel的中間件在 /app/Http/Middleware 目錄下,用于過濾HTTP請求,可以做一些字段驗證、身份驗證、CSRF 防護等等......
Laravel自帶了一些中間件:
例:設置一個CheckLog中間件,判斷用戶是否登錄,如果登錄了可以看用戶列表頁,否則跳轉到首頁
執行生成中間件命令:(這里和控制器一樣采用前后臺目錄分開放的方式)
php artisan make:middleware Admin/CheckLog
CheckLog.php中間件內容:
<?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'); } //處理請求之前執行動作 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'); });
此時訪問用戶列表頁,會先走中間件判斷登錄狀態,沒登錄跳轉到首頁:
(Kernel.php中其他中間件屬性:全局中間件$middleware
、中間件組$middlewareGroups
、中間件執行順序$middlewarePriority
)
如果不給路由設置中間件屬性,也可以在控制器的構造方法里設置中間件,可以指定或排除具體某一個操作,示例如下:
<?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 = '獲取請求參數:'.$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); //驗證請求路徑 //if ($request->is('admin/*')) { //} //驗證請求方法 //if ($request->isMethod('post')) { //} } }
【分配數據 渲染視圖】
以后臺首頁視圖 /admin/index/index 為例:
控制器使用 view()
函數渲染視圖,同時分配數據:
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; class IndexController extends Controller { public function index(){ //分配一個字段 // $name = 'lws'; // return view('admin.index.index')->with('name',$name); //分配數組 $data = ['name' => 'lws','sex' => 'nan']; return view('admin.index.index', $data); //也可以使用php的compact函數傳值 //$name = 'lws'; //$sex = 'nan'; //return view('admin.index.index',compact('name','sex')); } }
視圖層使用雙大括號 {{ }} 獲得數據:
姓名:{{$name}}<br/> 性別:{{$sex}}
{{ $test }}
會自動調用 PHP 的 htmlspecialchars()
函數防止 XSS 攻擊,如果不需要轉義可使用 {!! $test !!}
,例如富文本格式。
以上是“Laravel5.7框架安裝與使用的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。