• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Laravel5.7框架安装与使用学习笔记图文详解

    本文实例讲述了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 !!} ,例如富文本格式。

    更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

    您可能感兴趣的文章:
    • 跟我学Laravel之安装Laravel
    • PHP开发框架laravel安装与配置教程
    • laravel安装和配置教程
    • centos 7系统下安装laravel运行环境的步骤详解
    • laravel 4安装及入门图文教程
    • laravel安装zend opcache加速器教程
    • laravel5.5安装jwt-auth 生成token令牌的示例
    • Laravel框架路由配置总结、设置技巧大全
    • 跟我学Laravel之路由
    • Laravel 5框架学习之路由、控制器和视图简介
    • Laravel框架下载,安装及路由操作图文详解
    上一篇:Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
    下一篇:PHP快速排序算法实现的原理及代码详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

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