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程序设计有所帮助。

(0)

相关推荐

  • Laravel 5.3 学习笔记之 安装

    1.服务器要求 Laravel 框架有对服务器有少量要求,当然,Laravel Homestead 已经满足所有这些要求,所以我们强烈推荐使用 Homestead 作为 Laravel 本地开发环境(Mac的话还可以使用Valet作为本地开发环境). 不过,如果你没有使用 Homestead,那么需要保证开发环境满足以下要求: PHP版本 >= 5.6.4 PHP扩展:OpenSSL PHP扩展:PDO PHP扩展:Mbstring PHP扩展:Tokenizer 2.安装 Laravel La

  • centos 7系统下安装laravel运行环境的步骤详解

    前言 因为最近在学习linux,而最好的学习就是实践,学习linux同时安装LAMP的环境搭配,跑了度娘都没找到我想要的文章.那我就简单的写写我在centos7下安装laravel的安装过程. 网络设置 ping 114.114.114.144 网络连接失败,将虚拟机的网络适配器改成桥接模式(自动),然后设置开启启动 打开 /etc/sysconfig/network-scripts/ifcfg-eno16777736,ifcfg-eno16777736是自己对应的配置文件 将里面的ONBOOT

  • laravel安装和配置教程

    系统环境需求 apache,nginx或者其他web服务器: laravel使用了PHP的一些强而有力的特性,所以需要在PHP5.3或者更高的版本上才能够执行: Laravel使用FileInfo library(http://php.net/manual/en/book.fileinfo.php)来检测文件的mime类型,这个库在PHP5.3中是默认含有的,但是在Windows中用户需要自己在php.ini中开启这个模块,如果不明白可以看看这里:http://php.net/manual/en

  • laravel框架的安装与路由实例分析

    本文实例讲述了laravel框架的安装与路由.分享给大家供大家参考,具体如下: laravel的安装 (1)Windows下的安装 1.准备工作 1.1 搭建PHP环境(wamp或其他环境) 1.2 安装Composer(Composer-Setup.exe) 1.3 配置Composer系统路径,需要将Composer所在目录配置到系统环境变量Path中.Composer对应的composer.bat文件所在目录默认为C:\ProgramData\ComposerSetup\bin. 2.使用

  • LAMP环境使用Composer安装Laravel的方法

    本文实例讲述了LAMP环境使用Composer安装Laravel的方法.分享给大家供大家参考,具体如下: 安装Composer 因为使用的Ubuntu服务器,所以我们使用apt安装: $ sudo apt install composer 安装Laravel 首先创建一个项目目录,进入新目录使用Composer安装Laravel: $ sudo mkdir -p /var/www/html/laravel/my_laravel $ cd /var/www/html/laravel/ $ sudo

  • laravel 4安装及入门图文教程

    一.安装Composer 首先你需要安装Composer,Composer是PHP依赖管理工具,Laravel框架就是使用 Composer 执行安装和依赖管理. 注: (1)若安装Composer出错,在php.ini中开启php_openssl,php_fileinfo扩展,因为Laravel需要. (2)安装过程中,选择正确的php.exe位置 二.安装Laravel Composer安装完成后,在cmd中,你的网站目录执行下面命令即可: composer create-project l

  • Laravel 5框架学习之路由、控制器和视图简介

    查看 app/Http/routes.php 复制代码 代码如下: Route::get('/', 'WelcomeController@index'); @是一个界定符,前面是控制器,后面是动作,表示当用户请求url / 的时候,执行控制器 WelcomeController 中的 index 方法 复制代码 代码如下: app/http/controllers/welcomecontroller.php public function index() { return view('welco

  • Laravel学习教程之路由模块

    前言 本文主要给大家介绍的是关于Laravel路由模块的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 备注:本文是基于Laravel 5.4版本的路由模块代码进行分析书写: 模块组成 下图展示了路由模块中各个文件的关系,并进行简要说明: 剖析 服务提供者 看Laravel模块,首先找ServiceProvider文件,这是模块与IOC容器交互的入口,从这个文件,可以看出该模块提供向系统提供了哪些服务: public function register() { //

  • Laravel最佳分割路由文件(routes.php)的方式

    前言 Laravel 的路由功能很强大,默认都是定义在 routes.php 文件中,随着项目越来越大,我们需要的定义的路由越来越多,想象一下,如果几百上千个路由都定义在一个文件中,如何去维护?也许还有不同的人都在同一个文件定义路由,这就造成了冲突,因此我们需要分割 routes.php 文件. 下面介绍一种很优雅的方式. 在 app/Providers/RouteServiceProvider.php 的 map 方法中可以如下定义: public function map(Router $r

  • Laravel框架路由配置总结、设置技巧大全

    基本路由 您的应用程序的绝大多数路由将在 app/routes.php 文件中定义.Laravel 中最简单的路由由一个 URI 和一个闭包调用组成. 基本 GET 路由 复制代码 代码如下: Route::get('/', function() { return 'Hello World'; }); 基本 POST 路由 复制代码 代码如下: Route::post('foo/bar', function() { return 'Hello World'; }); 注册一个路由以响应所有 HT

随机推荐