当前位置:编程学习 > > 正文

laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

时间:2022-04-01 01:34:51类别:编程学习

laravel入门教程零基础

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

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

【安装laravel】

composer安装:

  • ?
  • 1
  • composer create-project --prefer-dist laravel/laravel
  • 目录结构:

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

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

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    原因是并没有vendor这个文件夹,看了这篇博客 http://www.zzvips.com/article/179695.html

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

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

  • ?
  • 1
  • 2
  • 3
  • chmod -r 777 storage/
  • chmod -r 777 bootstrap/cache/
  • chmod -r 777 vendor/
  • 还是不行,最后查看了/storage/logs下面的日志,有报错:

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

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

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

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

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

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

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

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

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

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    【一些配置】 

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

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    修改app.php,开启debug:

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    设置时区为asia/shanghai:

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    控制器目录:

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    视图层目录:

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    【初识路由】

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

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

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

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

  • ?
  • 1
  • 2
  • 3
  • route::get('/', function () {
  •   return view('welcome');
  • });
  •  
  • 在控制器目录新建了一个indexcontroller.php:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • <?php
  •  
  • namespace app\http\controllers;
  •  
  • class indexcontroller extends controller
  • {
  •   public function index(){
  •     return '这是首页';
  •   }
  • }
  • 修改首页路由:

  • ?
  • 1
  • route::get('/', 'indexcontroller@index');
  • 再次访问首页:

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

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

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

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    以后台admin为例,在下面新建两个控制器index和user

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

  • ?
  • 1
  • php artisan make:controller admin/indexcontroller
  • laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    indexcontroller.php:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • <?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:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • <?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等。

    路由组规则设置如下:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • //在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那样的 /模块名/控制器名/操作名 的访问方式:

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

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

    【中间件】

    laravel的中间件在 /app/http/middleware 目录下,用于过滤http请求,可以做一些字段验证、身份验证、csrf 防护等等......

    laravel自带了一些中间件:

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

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

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

  • ?
  • 1
  • php artisan make:middleware admin/checklog
  • laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

     laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    checklog.php中间件内容:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • <?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 里面注册

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

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

  • ?
  • 1
  • 'admin.checklog' => \app\http\middleware\admin\checklog::class,
  •  
  • laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • //后台用户
  • route::group(['prefix' => 'admin/user' , 'middleware' => 'admin.checklog'], function () {
  •   //用户列表
  •   route::get('userlist', 'usercontroller@userlist');
  •  
  •   //用户添加
  •   route::get('useradd', 'usercontroller@useradd');
  • });
  • 此时访问用户列表页,会先走中间件判断登录状态,没登录跳转到首页:

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    (kernel.php中其他中间件属性:全局中间件$middleware、中间件组$middlewaregroups、中间件执行顺序$middlewarepriority) 

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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • <?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 类

    基本使用:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • <?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')) {
  •     //}
  •   }
  • }
  • laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

    【分配数据 渲染视图】

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

    laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • <?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'));
  •   }
  • }
  • 视图层使用双大括号 {{ }} 获得数据:

  • ?
  • 1
  • 2
  • 姓名:{{$name}}<br/>
  • 性别:{{$sex}}
  •  laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)

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

    希望本文所述对大家基于laravel框架的php程序设计有所帮助。

    原文链接:https://blog.csdn.net/msllws/article/details/83964120

    上一篇下一篇

    猜您喜欢

    热门推荐