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
目录结构:
网站根目录指向了/public,访问报错:
原因是并没有vendor这个文件夹,看了这篇博客
在根目录执行 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(emptyempty($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 !!} ,例如富文本格式。
Tags: Laravel5 7框架安装
相关文章
- ·如何在laravel 5中使用DB事务?(2020-01-31)
- ·Laravel5中contracts详解(2021-05-15)
- ·Laravel 5 学习笔记(2021-05-15)
- ·Laravel 5.5官方推荐的Nginx配置学习教程(2021-08-11)
- ·laravel5 使用try catch的实例详解(2021-08-21)
- ·Laravel5.5中利用Passport实现Auth认证的方法(2021-08-22)
- ·Laravel 5.5基于内置的Auth模块实现前后台登陆详解(2021-08-25)
- ·Laravel5.2使用Captcha生成验证码实现登录(session巨坑)(2021-08-26)
- ·Laravel 5.4.36中session没有保存成功问题的解决(2021-09-03)
- ·在Laravel5.6中使用Swoole的协程数据库查询(2021-10-01)
- ·详细Laravel5.5执行表迁移命令出现表为空的解决方案(2021-10-10)
- ·Laravel5.5以下版本中如何自定义日志行为详解(2021-10-20)
- ·Laravel5框架添加自定义辅助函数的方法(2021-10-20)
- ·laravel5使用freetds连接sql server的方法(2021-11-02)
- ·Laravel5.4框架使用socialite实现github登录的方法(2021-11-13)
- ·Laravel5.7 Eloquent ORM快速入门详解(2021-11-16)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)