laravel入门教程零基础(Laravel5.7框架安装与使用学习笔记图文详解)
laravel入门教程零基础
Laravel5.7框架安装与使用学习笔记图文详解本文实例讲述了laravel5.7框架安装与使用。分享给大家供大家参考,具体如下:
【安装laravel】
composer安装:
|
composer create-project --prefer-dist laravel/laravel |
目录结构:
网站根目录指向了/public,访问报错:
原因是并没有vendor这个文件夹,看了这篇博客 http://www.zzvips.com/article/179695.html
在根目录执行 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框架的php程序设计有所帮助。
原文链接:https://blog.csdn.net/msllws/article/details/83964120
- laravel框架网站搭建教程(Laravel框架实现文件上传的方法分析)
- laravel 数据表格(Laravel自定义 封装便捷返回Json数据格式的引用方法)
- laravel常用的辅助函数介绍(Laravel框架表单验证操作实例分析)
- laravel消息机制(laravel框架中间件 except 和 only 的用法示例)
- laravel增删改查接口(laravel-admin 实现给grid的列添加行数序号的方法)
- laravel判断变量为空(Laravel模糊查询区分大小写的实例)
- laravel关于视图使用语法(在laravel中使用with实现动态添加where条件)
- laravel5.2模型返回数组(解决Laravel5.5下的toArray问题)
- laravel 数据库实现原理(laravel 数据迁移与 Eloquent ORM的实现方法)
- laravel后台登录教程(Laravel 默认邮箱登录改成用户名登录的实现方法)
- laravel 获取数据库操作异常(Laravel Eloquent ORM 多条件查询的例子)
- laravel数据库关联查找(laravel 操作数据库常用函数的返回值方法)
- laravel开发api实例(Laravel框架集成UEditor编辑器的方法图文与实例详解)
- laravel常用的辅助函数介绍(Laravel向公共模板赋值方法总结)
- laravel队列失败原理(Laravel第三方包报class not found的解决方法)
- echart图表有哪些(使用laravel和ECharts实现折线图效果的例子)
- 自制橡皮泥(自制橡皮泥)
- 还在卖 禁药西布曲明网上论斤卖(还在卖禁药西布曲明网上论斤卖)
- 微商在朋友圈热卖的 DL减肥咖啡 含违禁药物,你还敢买吗(微商在朋友圈热卖的)
- 八一节,说说中国女兵(八一节说说中国女兵)
- 王治郅菜鸟赛季已让八一带入正轨,大郅七大经典语录或是成功秘诀(王治郅菜鸟赛季已让八一带入正轨)
- 庆八一,重读经典红色语录,感悟互联网发展硬道理(重读经典红色语录)
热门推荐
- python选择语句形式判断回文数(Python3实现的回文数判断及罗马数字转整数算法示例)
- dedecms5.7能否用5.5的模板(dedecms 5.5 伪静态设置方法)
- 阿里云ecs部门怎么样(阿里云ecs是什么意思?)
- python如何判断文件是否结束(python判断文件是否存在,不存在就创建一个的实例)
- thinkphp 多维度展示数据(Thinkphp自定义生成缩略图尺寸的方法)
- 织梦v5.7首页二维码怎么修改(织梦dedecms登录管理后台总是验证码错误的解决方案)
- django请求流程(Django学习笔记之为Model添加Action)
- 怎样在python中散点图(python使用Plotly绘图工具绘制散点图、线形图)
- mysql怎么把行变列(MySQL 中行转列的方法)
- mysql事件教程(关于MySQL报警的一次分析处理详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9