当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel5.7框架安装与使用学习笔记图文详解

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-14 20:41:03 浏览: 评论:0 

这篇文章主要介绍了Laravel5.7框架安装与使用学习笔记,结合图文形式详细讲解了Laravel5.7框架的安装、配置、组件、路由等基础与操作技巧,需要的朋友可以参考下

本文实例讲述了Laravel5.7框架安装与使用。分享给大家供大家参考,具体如下:

【安装Laravel】

Composer安装:

composer create-project --prefer-dist laravel/laravel

目录结构:

Laravel5.7框架安装与使用学习笔记图文详解

网站根目录指向了/public,访问报错:

Laravel5.7框架安装与使用学习笔记图文详解

原因是并没有vendor这个文件夹,看了这篇博客

在根目录执行 composer update,下载了一大堆东西

完事访问一片空白,错误500......然后各种百度,各种设置目录权限:

chmod -R 777 storage/

chmod -R 777 bootstrap/cache/

chmod -R 777 vendor/

还是不行,最后查看了/storage/logs下面的日志,有报错:

Laravel5.7框架安装与使用学习笔记图文详解

少了这么一个key,再次百度,我的做法是:把根目录.env.example这个隐藏文件重命名为.env

Laravel5.7框架安装与使用学习笔记图文详解

然后根目录执行 php artisan key:generate

Laravel5.7框架安装与使用学习笔记图文详解

(参考博客:https://blog.csdn.net/qq_39479575/article/details/78495703)

终于打开了这个页面,真不容易,明天我得吃个鸡腿庆祝一下......

Laravel5.7框架安装与使用学习笔记图文详解

使用 php artisan --version 命令查看安装的Laravel版本,是最新的5.7版本 :

Laravel5.7框架安装与使用学习笔记图文详解

Laravel5.7框架安装与使用学习笔记图文详解

【一些配置】 

Laravel 所有的配置文件都放在根目录 /config 下面:

Laravel5.7框架安装与使用学习笔记图文详解

修改app.php,开启debug:

Laravel5.7框架安装与使用学习笔记图文详解

设置时区为Asia/Shanghai:

Laravel5.7框架安装与使用学习笔记图文详解

控制器目录:

Laravel5.7框架安装与使用学习笔记图文详解

视图层目录:

Laravel5.7框架安装与使用学习笔记图文详解

【初识路由】

与thinkphp相比,Laravel不能通过 /模块名/控制器名/操作名 直接访问web界面

每一个web界面都必须在 /routes/web.php 中定义一条路由规则:

Laravel5.7框架安装与使用学习笔记图文详解

默认路由配置的意思是:访问根目录(网站首页),渲染视图层的"欢迎"页面:

  1. Route::get('/'function () { 
  2.   return view('welcome'); 
  3. }); 

在控制器目录新建了一个IndexController.php:

  1. <?php 
  2.  
  3. namespace App\Http\Controllers; 
  4.  
  5. class IndexController extends Controller 
  6.   public function index(){ 
  7.     return '这是首页'
  8.   }  

修改首页路由:

Route::get('/', 'IndexController@index');

再次访问首页:

Laravel5.7框架安装与使用学习笔记图文详解

项目通常会区分前后台,在tp中可以通过划分模块来实现,Laravel中同样可以用这个原理

在控制器目录下新建了两个文件夹:Index、Admin,分别作为前、后台控制器模块:

Laravel5.7框架安装与使用学习笔记图文详解

以后台Admin为例,在下面新建两个控制器Index和User

手动创建太low了,Laravel使用命令行创建控制器、Model,命名空间都自动帮你写好......

php artisan make:controller Admin/IndexController

Laravel5.7框架安装与使用学习笔记图文详解

IndexController.php:

  1. <?php 
  2.  
  3. namespace App\Http\Controllers\Admin; 
  4.  
  5. use Illuminate\Http\Request; 
  6. use App\Http\Controllers\Controller; 
  7.  
  8. class IndexController extends Controller 
  9.   public function index(){ 
  10.     return '后台首页'
  11.   }  

UserController.php:

  1. <?php 
  2.  
  3. namespace App\Http\Controllers\Admin; 
  4.  
  5. use Illuminate\Http\Request; 
  6. use App\Http\Controllers\Controller; 
  7.  
  8. class UserController extends Controller 
  9.   public function userlist(){ 
  10.     return '后台用户列表页'
  11.   }  
  12.  
  13.   public function useradd(){ 
  14.     return '后台用户添加'
  15.   }  

在设置路由的时候,可以通过设置路由组group,共享路由属性。如:命名空间namespace、路由前缀prefix、中间件middleware等。

路由组规则设置如下:

  1. //在App\Http\Controllers\Admin命名空间下的控制器 
  2. Route::namespace('Admin')->group(function () { 
  3.   //后台首页 
  4.   Route::group(['prefix' => 'admin/index'], function () { 
  5.     // 首页显示 
  6.     Route::get('index''IndexController@index'); 
  7.   }); 
  8.  
  9.   //后台用户 
  10.   Route::group(['prefix' => 'admin/user'], function () { 
  11.     //用户列表 
  12.     Route::get('userlist''UserController@userlist'); 
  13.  
  14.     //用户添加 
  15.     Route::get('useradd''UserController@useradd'); 
  16.   }); 
  17. }); 

这样就可以实现类似tp那样的 /模块名/控制器名/操作名 的访问方式:

Laravel5.7框架安装与使用学习笔记图文详解

(当然路由前缀prefix和路由名称可以随意定义,不一定要遵循tp的写法,这里只是为了清晰明了)

【中间件】

Laravel的中间件在 /app/Http/Middleware 目录下,用于过滤HTTP请求,可以做一些字段验证、身份验证、CSRF 防护等等......

Laravel自带了一些中间件:

Laravel5.7框架安装与使用学习笔记图文详解

例:设置一个CheckLog中间件,判断用户是否登录,如果登录了可以看用户列表页,否则跳转到首页

执行生成中间件命令:(这里和控制器一样采用前后台目录分开放的方式)

php artisan make:middleware Admin/CheckLog

Laravel5.7框架安装与使用学习笔记图文详解

CheckLog.php中间件内容:

  1. <?php 
  2.  
  3. namespace App\Http\Middleware\Admin; 
  4. use Illuminate\Http\Request; 
  5. use Closure; 
  6.  
  7. class CheckLog 
  8.   /** 
  9.    * Handle an incoming request. 
  10.    * 
  11.    * @param \Illuminate\Http\Request $request 
  12.    * @param \Closure $next 
  13.    * @return mixed 
  14.    */ 
  15.   public function handle($request, Closure $next
  16.   { 
  17.     $mid = $request->cookie('mid'); 
  18.     if(emptyempty($mid)){ 
  19.       return redirect('admin/index/index'); 
  20.     } 
  21.     //处理请求之前执行动作 
  22.     return $next($request); 
  23.   } 

写好中间件之后需要注册中间件,在 /app/Http/Kernel.php 里面注册

Laravel5.7框架安装与使用学习笔记图文详解

目的是给路由分配中间件,在 routeMiddleware 属性里添加:

'admin.checklog' => \App\Http\Middleware\Admin\CheckLog::class,

Laravel5.7框架安装与使用学习笔记图文详解

修改/routes/web.php路由配置,给后台用户路由组添加中间件属性:

  1. //后台用户 
  2. Route::group(['prefix' => 'admin/user' , 'middleware' => 'admin.checklog'], function () { 
  3.   //用户列表 
  4.   Route::get('userlist''UserController@userlist'); 
  5.  
  6.   //用户添加 
  7.   Route::get('useradd''UserController@useradd'); 
  8. }); 

此时访问用户列表页,会先走中间件判断登录状态,没登录跳转到首页:

Laravel5.7框架安装与使用学习笔记图文详解

(Kernel.php中其他中间件属性:全局中间件$middleware、中间件组$middlewareGroups、中间件执行顺序$middlewarePriority)

如果不给路由设置中间件属性,也可以在控制器的构造方法里设置中间件,可以指定或排除具体某一个操作,示例如下:

  1. <?php 
  2.  
  3. namespace App\Http\Controllers\Admin; 
  4. use Illuminate\Http\Request; 
  5. use App\Http\Controllers\Controller; 
  6. class UserController extends Controller 
  7.   public function __construct(){ 
  8.     //全部操作生效 
  9.     $this->middleware('admin.checklog'); 
  10.  
  11.     //仅xxx操作生效 
  12.     // $this->middleware('admin.checklog')->only('userlist'); 
  13.  
  14.     //除xxx操作生效 
  15.     // $this->middleware('admin.checklog')->except('useradd'); 
  16.   } 
  17.  
  18.   public function userlist(){ 
  19.     return '后台用户列表页'
  20.   }  
  21.  
  22.   public function useradd(){ 
  23.     return '后台用户添加'
  24.   }  

【请求 request】

获得请求,首先需要引入 Illuminate\Http\Request 类

基本使用:

  1. <?php 
  2.  
  3. namespace App\Http\Controllers\Admin; 
  4. use Illuminate\Http\Request; 
  5. use App\Http\Controllers\Controller; 
  6. class IndexController extends Controller 
  7.   public function index(Request $request){ 
  8.     $uri = '请求路径:'.$request->path(); 
  9.     $url = '请求URL:'.$request->url(); 
  10.     $method = '请求方法:'.$request->method(); 
  11.     $name = '获取请求参数:'.$request->input('name'); 
  12.     $mid = '获取cookie:'.$request->cookie('mid'); 
  13.     $key = '获取session:'.$request->session()->get('key'); 
  14.     $file = '获取上传文件:'.$request->file('photo'); 
  15.     dump($uri); 
  16.     dump($url); 
  17.     dump($method); 
  18.     dump($name); 
  19.     dump($mid); 
  20.     dump($file); 
  21.  
  22.     //验证请求路径 
  23.     //if ($request->is('admin/*')) { 
  24.     //} 
  25.  
  26.     //验证请求方法 
  27.     //if ($request->isMethod('post')) { 
  28.     //} 
  29.   }  

Laravel5.7框架安装与使用学习笔记图文详解

【分配数据 渲染视图】

以后台首页视图 /admin/index/index 为例:

Laravel5.7框架安装与使用学习笔记图文详解

控制器使用 view() 函数渲染视图,同时分配数据:

  1. <?php 
  2.  
  3. namespace App\Http\Controllers\Admin; 
  4. use App\Http\Controllers\Controller; 
  5. class IndexController extends Controller 
  6.   public function index(){ 
  7.     //分配一个字段 
  8.     // $name = 'lws'; 
  9.     // return view('admin.index.index')->with('name',$name); 
  10.  
  11.     //分配数组 
  12.     $data = ['name' => 'lws','sex' => 'nan']; 
  13.     return view('admin.index.index'$data); 
  14.  
  15.     //也可以使用php的compact函数传值 
  16.     //$name = 'lws'; 
  17.     //$sex = 'nan'; 
  18.     //return view('admin.index.index',compact('name','sex')); 
  19.   }  

视图层使用双大括号 {{ }} 获得数据:

姓名:{{$name}}<br/>

性别:{{$sex}}

Laravel5.7框架安装与使用学习笔记图文详解

{{ $test }} 会自动调用 PHP 的 htmlspecialchars()函数防止 XSS 攻击,如果不需要转义可使用 {!! $test !!} ,例如富文本格式。

Tags: Laravel5 7框架安装

分享到: