Laravel基本使用

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 [email protected]
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‘);
});
// [email protected]方法
②.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‘,‘[email protected]‘);
②.带参数访问
(a).路由带参数
Route::get(‘/stu/del/{id}‘,[
‘uses‘=>‘[email protected]‘,
]);
控制器函数 需要截取形参$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‘=>‘[email protected]‘,
]);
④.中间件控制
(a).第一种方法
Route::get(‘/admin‘, [
‘middleware‘=>‘login‘,
‘uses‘=>‘[email protected]‘
]);
(b).第二种方法
Route::get(‘/stu/update‘,‘[email protected]‘)->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

时间: 2024-08-05 07:05:02

Laravel基本使用的相关文章

Laravel 5.4 中的异常处理器和HTTP异常处理实例教程

错误和异常是处理程序开发中不可回避的议题,在本地开发中我们往往希望能捕获程序抛出的异常并将其显示打印出来,以便直观的知道程序在哪里出了问题并予以解决,而在线上环境我们不希望将程序错误或异常显示在浏览器中(出于安全考虑),这个时候我们仍然要捕获异常,只不过不是显示到浏览器中,而是记录到日志中,方便日后排查问题. 百牛信息技术bainiu.ltd整理发布于博客园 Laravel当然支持PHP原生的错误和异常处理,但是在此基础上进行了一些封装处理,从而更方便在不同开发环境切换以及对错误和异常的处理.

laravel框架数据迁移

迁移就像数据库的版本控制,允许团队简单轻松的编辑并共享应用的数据库表结构,迁移通常和Laravel 的 schema 构建器结对从而可以很容易地构建应用的数据库表结构.如果你曾经告知小组成员需要手动添加列到本地数据库结构,那么这正是数据库迁移所致力于解决的问题. Laravel 的 Schema 门面提供了与数据库系统无关的创建和操纵表的支持,在 Laravel 所支持的所有数据库系统中提供一致的.优雅的.平滑的 API. laravel默认有两个文件uses  和 password_reset

详细说明php的4中开源框架(TP,CI,Laravel,Yii)

ThinkPHP简称TP,TP借鉴了Java思想,基于PHP5,充分利用了PHP5的特性,部署简单只需要一个入口文件,一起搞定,简单高效.中文文档齐全,入门超级简单.自带模板引擎,具有独特的数据验证和自动填充功能,框架更新速度比较速度. 优点:这个框架易使用 易学 安全 对bae sae支持很好提供的工具也很强大 可以支持比较大的项目开发 易扩展 全中文文档 总的来说这款框架适合非常适合国人使用 性能 上比CI还要强一些 缺点:配置对有些人来说有些复杂(其实是因为没有认真的读过其框架源码)文档有

Laravel 5.0 - Middleware (中间件)

图片:http://stackphp.com/ 如上图所示,中心的绿色区域是整个应用的核心区域. 所以,中间件就是一系列处理请求和响应的方式而不是你用程序逻辑的一部分. Laravel 中默认使用中间件处理请求中的加密解密,以及 Cookies 和 Sessions.你也可以自定义自己所需的中间件. 写中间件 artisan make:middleware MyMiddleware 执行上面的命令,生成中间件文件: <?php namespace App\Http\Middleware; use

laravel安装笔记

一.安装composer 安装之前将\php\php.ini文件中的php_openssl.dll扩展库开启,否则composer在安装过程中会出现错误提示. (我在安装过程中发现apache目录下的php.ini最好也开启php_openssl.dll,就是讲前面的‘:’号去掉) composer下载地址:https://getcomposer.org/ windows下载地址:https://getcomposer.org/Composer-Setup.exe 二.下载Laravel最新框架

Laravel 5.5 的自定义验证对象/类

本文和大家分享的主要是Laravel 5.5 的自定义验证对象/类相关内容,一起来看看吧,希望对大家学习Laravel有所帮助. Laravel 5.5 将提供一个全新的自定义验证规则的对象,以作为原来的 Validator::extend 方法的替代. Laravel 中的表单验证是比较方便的,而且内置了大量的可用验证规则,但不管官方提供了多少,总还是会有满足不了需求的时候.很多时候我们会直接用正则表达式来处理这种特殊的验证,也有时候我们会选择用 Validator::extend来扩展一个自

laravel 数据库操作小例子

public function demo() { $res = null; //insert数据插入 //$user=array('username'=>'joy','password'=>'123456','age'=>23); //$res = DB::table('users')->insert($user); /* 数据查询 $res = DB::table('users')->where('username','joy')->get(); $res = DB:

Laravel中常见的错误与解决方法小结

一.报错: 「Can't swap PDO instance while within transaction」 通过查询 Laravel 源代码,可以确认异常是在 setPdo 方法中抛出的: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <?php public function setPdo($pdo) {   if ($this->transactions >= 1) {     throw new RuntimeException("

Laravel学习基础篇之--路由

终于还是决定再多学一门重量级框架,当然首选必备还是被称为最优雅的Web开发框架--Laravel 对于框架的入门,首先了解它的路由规则是先前必备的,以下是laravel 中几种常见的基础路由规则 //基础路由//GETRoute::get('basic',function (){ return 'Im,GET'; }); //POSTRoute::post('basic2',function (){ return 'Im,Post'; }); //多请求路由(两种方式:match & any m

小白也能看懂的 Laravel 核心概念讲解

自动依赖注入 什么是依赖注入,用大白话将通过类型提示的方式向函数传递参数. 实例 1 首先,定义一个类: /routes/web.php class Bar {} 假如我们在其他地方要使用到 Bar 提供的功能(服务),怎么办,直接传入参数即可: /routes/web.php Route::get('bar', function(Bar $bar) { dd($bar); }); 访问 /bar,显示 $bar 的实例: Bar {#272} 也就是说,我们不需要先对其进行实例!如果学过 PH