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/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.x 请求的生命周期(附源码)

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

  9. Laravel 5.3 登录注册底层实现详解

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

  10. Laravel - 安装与配置

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

随机推荐

  1. linux下线程的分离和结合属性

    在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached).一个可结合的线程能够被其他线程收回其资源和杀死:在被其他线程回收之前,它的存储器资源(如栈)是不释放的.相反, ...

  2. 【实战】Apache Shiro 1.2.4 RCE

    poc: #coding: utf-8 import os import re import sys import base64 import uuid import subprocess impor ...

  3. Neo4j使用简单例子(转)

    Neo4j Versions Most of the examples on this page are written with Neo4j 2.0 in mind, so they skip th ...

  4. .Net Core 发布异常 An assembly specified in the application

    在Core 2.0站点发布时.. DotNet WW.kkkk.dll 报错..报文内容如下: Error: An assembly specified in the application depe ...

  5. dotnet core webapi +vue 搭建前后端完全分离web架构(一)

    架构 服务端采用 dotnet core  webapi 前端采用: Vue + router +elementUI+axios 问题 使用前后端完全分离的架构,首先遇到的问题肯定是跨域访问.前后端可 ...

  6. 用Python写了一个postgresql函数,感觉很爽

    用Python写了一个postgresql函数,感觉很爽 CREATE LANGUAGE plpythonu; postgresql函数 CREATE OR REPLACE FUNCTION myfu ...

  7. spring boot快速入门 6: 表单验证

    廖师兄源码: https://gitee.com/liaoshixiong/girl 样例:拦截所有未满18岁的女生 第一步:在girl实体类中:添加注解 @Min(value=18 ,message ...

  8. WebDriver获得表格里所有单元格的文本

    方法为: 1. 得到表格中所有的tr,存到list到中 2.对tr进行循环,根据当前的tr,得到当前所有td的集合存到list当中 3.循环中所有td里的文本 package com.example. ...

  9. [问题解决]Fresco设置占位图不显示的问题

    [问题解决]Fresco设置占位图不显示的问题 /** * Created by diql on 2017/02/15. */ 问题说明 本来设置占位图是通过以下方法: public void set ...

  10. Table '.\gts\eventdata#P#p0' is marked as crashed and last (automatic?) repair failed

    修复数据表操 MYSQL数据表出现问题,提示:Error: Table './db_name/table_name' is marked as crashed and last (automatic? ...