Laravel基本使用

时间:2023-02-27 20:40:46

laravel
一.简介
二.运行环境要求
1.php 版本>=5.5.9
2.Mcrypt PHP扩展 php的加密扩展,提供多种加密算法
3.openssl扩展 对传输的数据进行加密
4.mbstring扩展 提供了针对多字节字符串的函数,能够帮助处理php多字节编码
5.Tokenizer PHP扩展 php代码片段解析
三.安装
1.composer安装
composer create-project laravel/laravel your-project-name --prefer-dist "5.1.*"
2.直接复制一份安装好的即可

四.本地域名解析与apapche虚拟主机配置(window下)
1.打开:C:\Windows\System32\drivers\etc目录中的hosts文件:
配置信息:127.0.0.1 自定义主机名

2.在apache的conf\extra的httpd-vhosts.conf配置文件中配置
<VirtualHost *:80>
ServerAdmin chenxiaoyu@lampbrother.net
DocumentRoot "虚拟主机目录位置"
ServerName 虚拟主机名
ErrorLog "logs/虚拟主机名-error.log"
CustomLog "logs/虚拟主机名-access.log" common
</VirtualHost>

注:配置虚拟主机出现的问题
①.配置好之后 localhost不能访问
②.配置完成只能访问根目录
③.hosts文件打不开
五.配置
1.开发前必须要做的
①.配置虚拟主机
②.storage 和 vendor 目录要让服务器有写入权限 linux
③.程序密钥
(a).这里是默认生成的,如果没有的话可以使用命令
php artisan key:generate
(b).如果没有key会报错
No supported encrypter found. The cipher and / or key length are invalid.
④.修改时区
config/app.php 'timezone'=>'PRC'
优先建立出来 404 页面
404.blade.php

SEO 搜索引擎优化

2.开发过程中要用到的
①.读取和设置配置
(a).Config::get('app.timezone');
(b).Config::set('app.timezone','PRC');
②.获取环境变量
(a).env('DB_HOST','');
③.关闭和启动应用
(a).关闭 php artisan down 模版配置 resources/views/errors/503.blade.php
(b).开启 php artisan up
④.URL重写
public/.htaccess
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
六.路由:将信息从源地址传递到目的地的角色 abort
1.文件位置:app/Http/routes.php
2.基本路由
①.Route::get('/admin', function () {
return view('useradd');
});
// controller@方法
②.Route::post('/admin', function () {
return view('useradd');
});
使用post方式请求服务器的时候,可以先将http/kernel.php 中的第20行屏蔽
③.Route::put(); //修改
④.Route::delete(); //删除
3.带参数的路由
①.普通使用
Route::get('/goodsinfo/{id}', function ($id) {
echo "商品的id是".$id;
});
?a=123&b=456

②.限制参数类型
Route::get('/user/{id}',function($id){
echo $id;
})->where('id','\d+');
4.传递多个参数
①.Route::get('/user/{name}/{id}',function($name,$id){
echo $name;
echo "<br>";
echo $id;
})->where('id','\d+')->where('name','\d+');
5.路由别名 少
①.Route::get('/admin/user/delete',[
'as'=>'udelete',
'uses'=>function(){
//快速获得改地址
$url=route('udelete');
echo 'ok';
}
]);
6.路由组设置 middleware
①.Route::group([],function(){

});
7.404页面设置
resources/views/errors/404.blade.php
8.CSRF保护
POST 提交 自动执行 csrf

TokenMismatchException in VerifyCsrfToken.php line 53:
开启了csrf的保护
csrf

七.中间件
1.创建(默认不直接生效)
php artisan make:middleware LoginMiddleware
2.事例代码
$ip=$request->ip();
$path=$request->path();
file_put_contents('./ips.txt',$ip.'------'.$path."\r\n",FILE_APPEND);

路径的问题
相对路径 ../ ./ 绝对路径 /

php语言 绝对路径 / 代表 盘符根目录
./ ../ 相对路径 入口文件 所在的目录 public
html的绝对路径 / 当前的域名 所指定的目录 public

在laravel中 php端一律使用相对路径 html端 一律使用绝对路径
echo "<img src='/1.jpg'>";
include ""; 相对路径

3.注册app/Http/Kernel.php
①.全局注册:$middleware 命名空间\类名::class
\App\Http\Middleware\LoginMiddleware::class
①.局部注册:$routeMiddleware 别名=>命名空间\类名::class
'login'=> \App\Http\Middleware\LoginMiddleware::class
4.使用

Route::get('/admin', [
'middleware'=>'admin',
'uses'=>function(){
echo '后台';
},
]);

八.控制器
1.创建控制器
php artisan make:controller UserController --plain
2.路由以及访问
①.普通用法
Route::get('/stu/add','StuController@add');
②.带参数访问
(a).路由带参数
Route::get('/stu/del/{id}',[
'uses'=>'StuController@del',
]);
控制器函数 需要截取形参$id
public function del($id){}

(b).原生参数 ?id=123
public function add(request $request){
$id=$request->input('id');
echo $id;
}

③.别名
Route::get('/stu/del/{id}',[
'as'=>'udel',
'uses'=>'StuController@del',
]);
④.中间件控制
(a).第一种方法
Route::get('/admin', [
'middleware'=>'login',
'uses'=>'StuController@update'
]);
(b).第二种方法
Route::get('/stu/update','StuController@update')->Middleware('login');

⑤.隐式控制器
(a).路由
Route::controller('users','UserController');
//所有请求为users的 都由UserController来完成
注:运行artisan命令的时候 要保证当前脚本不能有报错

post/getStu

(b).使用
控制器中方法起名规则
public function 请求方式+路径(){}
例如:
所访问的路径是 users/add
public function getAdd(){}
⑥.restful 资源控制器
Route::resource('type','TypeController');
九.请求
1.基本信息获取 了解
①.请求方法 $request->method();
②.检测方法 $request->isMethod('post');
③.请求路径 $request->path();
④.请求完整url $request->url();
⑤.获取ip $request->ip();
⑥.获取端口 $request->getPort();

⑦.获取头信息 $arr=$request->header('Connection');

******************************
2.提取请求参数 POST GET
①.提取参数 $request->input('name');
②.设置默认值 $request->input('name','xy');
③.检测是否存在 $request->has('name');
④.提取所有参数 $arr=$request->all();
⑤.提取部分 $arr=$request->only(['username','password']);
⑥.提取部分 $arr=$request->except(['username','password']);

3.文件操作
①.检测是否有文件上传 $request->hasFile('表单name值');
②.将文件移动到指定位置 $request->file('表单name值')->move('路径','新名字');

路径的问题
前台 html代码
绝对路径 / 域名 直接 绑定的 那个文件夹 public里面的东西
不能写相对路径
php
绝对路径 / 当前项目所在的盘符的根目录
相对路径 ./ 当前入口文件所在的路径

总结 laravel里面 html代码 绝对路径 php代码 相对路径
echo "<img src='1.jpg'>"; html 绝对路径
include file_get_content fopen ....... php 函数

4.cookie操作
①.设置 \Cookie::queue('cookie名','cookie值',过期时间);

return response('')->withCookie('cookie名','cookie值',过期时间);

②.读取 \Cookie::get('name');

$request->cookie('name');

//路由的路径的名字 和 public里面的文件夹的名字千万不要同名 同名 默认走的public里面的文件夹 *****************

5.闪存信息:基于SESSION 用来存储请求参数的 session 关闭浏览器 flash 只要刷新一下页面 就失效 主要用来做注册
①.将所有的请求参数写入闪存中 $request->flash();
②.将部分参数写入闪存中 $request->flashOnly('参数1','参数2'..);
③.除去某些参数之外的参数 $request->flashExcept('参数1');
④.简便使用 return back()->withInput();

获取闪存的参数 old('参数')

十.响应
1.返回字符串 return "string"; 相当于 echo
2.设置cookie return response('')->withCookie('名','值',时间);

3.返回json return response()->json(["a"=>100,"b"=>2000]);

4.下载文件 return response()->download('web.config');
5.页面跳转 return redirect('/goods/add'); return back(); //返回上一页
6.显示模版 return response()->view('user'); return view('');

十一.视图
1.解析模版 view('user.add'); // \ / 都可以
2.分配数据到模版
view('user.add',[]);
3.模版引擎blade
①.模版的默认存放位置 resource/views
②.使用变量 {{$username}}
③.设置函数 {{time()}}
④.设置默认值 {{$user or 'guest'}}
⑤.显示html代码 {!! $name !!}
⑥.引入子视图 @include('header')
⑦.模版继承 @extends('index')

(a).占位符 @yield('title')

@section('content')
@show

(b).新模板内容
@section('title','new Title')

@section('content')
[ @parent ]
新内容
@endsection
4.流程控制
① 判断
@if($t==1)
处理
@elseif(count($records)>1)
处理
@else
处理
@endif
②.循环控制
@for($i=0; $i<10; $i++)
处理
@endfor
@foreach($users as $k=>$v)
处理
@endforeach

十二.数据库操作

1.支持的数据库类型
mysql Postgres SQLite SQLServer
2.数据库连接配置
①.文件位置 config/database.php
②..env环境快速配置
3.数据库基本操作
***********************************************
使用数据库的类的时候 一定要在上面现引入命名空间
use DB;
否则
Class 'App\Http\Controllers\DB' not found
***********************************************

①.查询 DB::select()
②.插入 DB::insert
③.更新 DB::update
④.删除 DB::delete

//上面的都不要记住

⑤.一般语句 DB::statement('drop table users');
* ⑥.事务操作 DB::beginTransaction()
DB::rollBack()
DB::commit()

* ⑦.操作多个数据库 DB::connection('数据库别名')->select();

4.构造器
①.增删改查
(a).插入
单条: DB::table('stu')->insert(['name'=>'xy','age'=>46]);
多条: DB::table('stu')->insert([['name'=>'xy','age'=>46],['name'=>'xy','age'=>46]]);
获取id插入: $id=DB::table('stu')->insertGetId(['name'=>'xy','age'=>46]);
(b).更新
DB::table('stu')->where('id',1)->update(['name'=>'xy'])
(c).删除
DB::table('stu')->where('id','<','100')->delete();
(d).查询
查询所有: DB::table('stu')->get()
查询单条: DB::table('stu')->first();
查询单条结果中的某个字段 DB::table('stu')->value('name')
获取一列数据 DB::table('stu')->lists('name')
②.连贯操作
(a).设置字段名 DB::table('stu')->select('name','email as user_email')->get();
(b).条件
DB::table('stu')->where('name','like','%a%');->get();
DB::table('stu')->where('name','>','100')->orwhere('name','xy')->get()
DB::table('stu')->whereBetween('id',[1,5])->get()
DB::table('stu')->whereIn('id',[1,2,3])->get()
(b)排序 orderBy('name','desc');
(c)分页 DB::table('stu')->skip(10)->take(5)->get();
(d)分组 DB::table('stu')->groupBy('name')->having()->get();
(e)连接表 DB::table('stu')->join('class','stu.cid','=','class.id')->select('stu.name','class.cname')->get();
(f)计算
总数 DB::table('stu')->count();
最大值 DB::table('stu')->max('price') // min
平均值 DB::table('stu')->avg('price')

5.sql语句记录
①. app/Providers/AppServiceProvider.php
boot方法中添加
DB::listen(function($sql,$bindings,$time){
//写入sql
file_put_contents('.sqls',"[".date("Y-m-d H:i:s")."]".$sql."\r\n",FILE_APPEND);
});
②.
routes.php
Event::listen('illuminate.query',function($query){
var_dump($query);
});

十三.设置自定义函数和自定义类文件
1.建立出自定义文件 例如:app/common/function.php
2.在项目下的composer.json中添加信息
"autoload":{
"classmap":[
"database"
],
"psr-4":{
"App\\":"app\"
},
"files":[
"app/common/function.php"
]
}
3.dos界面当中composer dump-auto

十四.调试工具
1.debugbar安装
composer require barryvdh/laravel-debugbar

在config/app.php里面的providers添加
Barryvdh\Debugbar\ServiceProvider::class,

2.chrome 插件 postman FQ 安装

防止csrf攻击
打开 app/kernel.php 第20行

{{csrf_field()}} 生成了一个hidden 表单提交

{{csrf_token()}} 生成了一个 token字符串 ajax

Laravel基本使用的更多相关文章

  1. TODO:Laravel增加验证码

    TODO:Laravel增加验证码1. 先聊聊验证码是什么,有什么作用?验证码(CAPTCHA)是"Completely Automated Public Turing test to te ...

  2. TODO:Laravel 内置简单登录

    TODO:Laravel 内置简单登录 1. 激活Laravel的Auth系统Laravel 利用 PHP 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管 ...

  3. TODO:Laravel 使用blade标签布局页面

    TODO:Laravel 使用blade标签布局页面 本文主要介绍Laravel的标签使用,统一布局页面.主要用到到标签有@yield,@ stack,@extends,@section,@stop, ...

  4. TODO:搭建Laravel VueJS SemanticUI

    TODO:搭建Laravel VueJS SemanticUI Laravel是一套简洁.优雅的PHP开发框架(PHP Web Framework).可以让你从面条一样杂乱的代码中解脱出来:它可以帮你 ...

  5. Bringing Whoops Back to Laravel 5

    You might be missing the "prettier" Whoops error handler from Laravel 4. If so, here's how ...

  6. 在 Laravel 中使用图片处理库 Integration&sol;Image

    系统需求 PHP >= 5.3 Fileinfo Extension GD Library (>=2.0) … or … Imagick PHP extension (>=6.5.7 ...

  7. Laravel Composer and ServiceProvider

    Composer and: 创建自定义类库时,按命名空间把文件夹结构组织好 composer.json>autoload>classmap>psr-4 composer dump-a ...

  8. Laravel 5&period;x 请求的生命周期(附源码)

    Laravel最早接触是刚开始实习的时候,那时通过网上的学习资料很快便上手,开发模块接口.后来没有什么深入和总结,但是当我刚开始学Laravel的时候,我对Laravel最大的认识就是,框架除了路由. ...

  9. Laravel 5&period;3 登录注册底层实现详解

          每个控制器都使用 trait 来引入它们需要的方法 */ 用于处理用户登录认证 用于处理新用户注册 包含重置密码逻辑 用于处理重置密码邮件链接   认证需要的视图 包含了应用的基础布局文件 ...

  10. Laravel - 安装与配置

    有多重途径可以安装Laravel,下面是通过composer安装laravel的方法.Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们.c ...

随机推荐

  1. Python Twisted、Reactor

    catalogue . Twisted理论基础 . 异步编程模式与Reactor . Twisted网络编程 . reactor进程管理编程 . Twisted并发连接 1. Twisted理论基础 ...

  2. Java 征途:行者的地图 &lpar;转&rpar;

    http://www.cnblogs.com/mindwind/p/5251430.html Java 征途:行者的地图   前段时间应因缘梳理了下自己的 Java 知识体系, 成文一篇望能帮到即将走 ...

  3. 31&period;Spring-开发流程&period;md

    [toc] 1.简单开发流程 1.1引用类库 基本类库: ## 1.2创建spring配置文件,文件的名称为固定格式:applicationContext.xml或者bean.xml: <?xm ...

  4. Wince下实现ImageButton

    我们在winform中给按钮设置个背景图片超级简单,是不?可是在wince下面就没那么简单了,下面我来介绍一种方式来实现ImageButton. 实现思路是重新写一个usercontrol就ok.具体 ...

  5. 获取CPU系列号&comma;硬盘系

    unit Secrity; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...

  6. Android开发学习之路--Android Studio项目目录结构简介

    既然已经搭建好环境了,那就对Android Studio中项目目录结构做个简单的了解了,这里以最简单的Hello工程为例子,新建好工程后看如下三个工程视图: 1.Android工程 manifests ...

  7. Codeforces962F Simple Cycles Edges 【双连通分量】【dfs树】

    题目大意: 给出一个无向图,问有哪些边只属于一个简单环. 题目分析: 如果这道题我们掌握了点双连通分量,那么结论会很显然,找到每个点双,如果一个n个点的点双正好由n条边构成,那么这些边都是可以的. 这 ...

  8. 第K人&vert;&vert;约瑟夫环(链表)

    http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4442 很容易超时 通过数组来记录,删除 //数组从1开始好像不行 后面一些数字就乱码了,因 ...

  9. Angular基础&lpar;八&rpar; Observable &amp&semi; RxJS

    对于一个应用来说,获取数据的方法可以有很多,比如:Ajax, Websockets, LocalStorage, Indexdb, Service Workers,但是如何整合多种数据源.如何避免BU ...

  10. Kubernetes体系结构

      Nodes Node Status Addresses Phase Condition Capacity Info Management Node Controller Self-Registra ...