一、使用laravel前的准备工作:
二、laravel框架安装:
1、composer的使用:下载 安装
进入getcomposer.org 去现在windows系统版本 它会自动下载安装并为你添加环境变量 让你直接在cmd中使用
安装过程中 找到PHP运行文件 PHP.exe 初次以外还可以设置代理服务器(跳过)安装完成运行composer会输出帮助信息
2、使用composer安装laravel
administrator> cd ~\www
使用中文镜像下载和安装 进入laravel中文网 golaravel.com 点击右边镜像关键字 进入后搜索命令 composer config -g repo.packagist composer https://packagist.phpcomposer.com
~\www> composer create-project laravel/laravel --prefer-dist(使用压缩的框架文件) la
如果提示composer命令不可用 则重启
安装完成后 产生序列号 KEY
执行 php -S localhost -t App/public 查看欢迎页
如果使用linux或者unix等系统 需要修改store和vendor的owner为Apache
3、查看安装文件 查找首页 并运行
三、laravel的基本使用
1、路由的使用:
路由设置在app->HTTP目录的routes.php文件中 添加各种不同的路由规则:
Route:请求方式(访问地址,执行代码);
1-1 GET请求地址 映射到控制器中的操作
Route::get("/", "WelcomeController@index");
可以使用某个匿名函数 写入执行代码
Route:get("test", function () {
return "这是GET请求!";
});
1-2 POST请求
Route:post("test", function () {
return "这是POST请求";
});
POST请求的模拟可以使用FF的HTTP REQUEST插件 laravel中的POST请求需要携带TOKEN参数 防止CSRF(cross site request forage)
1-3 ANY不区分请求的类型
Route:any("test", function () {
return "不区分请求的形式";
});
2、控制器创建:
自动创建:
~\la > php artisan make::controller UserController
自动产生UserController.php文件 并生成增删改查的一套方法
手动创建
Http->Controller目录中 创建一个 UserController.php
class UserController extends Controller {
public function index(){}
}
Route::get("user", "UserController@index");
资源器使用:
Route::resource("user", "UserController");
~\la >php artisan make:controller UserController
3、驱动模板
在控制器中调度模板和发送数据使用views函数
return view("user.add")->with("name", "Lucy");
多数据发送
$data = array(
"name" => "Lucy",
"sex" => "female",
"age" => 23,
);
views("user", $data);
如果数据只有一个变量值 则使用compact(变量名字符串)生成数据
$name = "Lucy";
view("user", compact("name"));
view()函数 其实本质上是View对make()方法的调用 View::make("user");
4、模板使用
视图模板存放在 resource->view 目录下 模板文件需要.blade后缀 创建 user.blade.php模板文件
4-1:变量输出
模板中直接嵌入PHP脚本:<?php echo $name; ?>
使用模板标签:
{{ $name }} 默认值设置 {{$name or "无名大侠"}}
{{ "hello world" }}
非转移输出
@{{ some text }} @中的内容 总是作字符常量解析 因此可以用@来界定模板和原值
转义输出:
{{ "<h4>原样显示的HTML</h4>" }}
4-2:控制流和循环
@if($name)
$name;
@else
"无名大侠";
@endif
$user = array(
"name" => "Lucy",
"sex" => "female",
"age" => 23
);
<ul>
@foreach ($user as $tmp)
<li></li>
@endforeach
@for($i = 0; $i < 10; $i++)
@endfor
@while()
@endwhile;
</ul>
4-4 子视图模型的使用
使用@include引入存放在views/abc/header.blade.php
@include("abc.header");
第二天:环境配置与基本操作
1、.env 文件里面设置 设置键值对形式的配置信息
DB_CONNECTION = mysql
config里面读取环境配置的键值 env("DB_CONNECTION", "mysql");
一般要配置的是:
部署模式:APP_DEBUG=true
数据库DB配置
SESSION配置
DOWN/UP 执行php artisan down 进入维护页面 在resources->views->errors->503.blade.php
php artisan up 恢复服务
2、Eloquent 用来和数据库交互的一个工具和机制
2-1 创建表模型:
php artisan make:model User 在APP目录中产生一个 User.php
配置表模型:
$table = "think_admin_user"; 表名
$primaryKey = "uid"; 主键
$hidden = ["password","createtime"]; 查询隐藏的字段
$fillable = []; 可自动填充的字段
$guarded = []; 不可自动转换的字段
2-2 模型的使用:
控制器中直接调用
$userModel = new \App\User();
$userModel->all();
添加模型方法
public function read()
{
return $this->all();
}
控制器中调用自定义模型方法
$userModel->read();
2-2 模型的使用 基本增删改查
查询结果集
public function read()
{
查一条 主键ID 为 1的这条 找不到返回空
$this->find(1);
找不到进行报错
$this>findOrFail(1);
连贯操作
$this->where("uid", "1")->get();
非等于查找
$this->where("uid", ">", 1)->get();
}
添加一条数据
public function userAdd()
{
动态写入字段值
$this->uname = "hello";
$this->password = md5(rand(1,100));
已有的储备数据
$data = ["uname" => "hello", "password" => md5(rand(1, 100))];
$this->fill($data);
写入数据时 默认会有一个修改和创建时间 要不设置该字段 要不关闭验证 通过模型中设置 public $timestamps = false 关闭
return $this->save();
}
修改数据
public function userUpdate()
{
设置要修改的用户
$user = $this->find(5);
设置数据值
$user->uname = "world";
保存新数据
$user->save();
批量修改数据
$users = $this->where("uid", ">", 10);
$user->update(["nickname" => "Lautinggg"]);
}
删除数据
public function userDel()
{
$user = $this->find(10);
$user->delete();
}
2-3 模型数据的查看和格式转化
每条数据默认以对象形式存在,多条数据则是对象的集合(collection对象),可以使用dd()辅助函数插件, 如果希望转化成数组则可以使用toArray()方法
function () {
$userModel = new \App\User();
$users = $userModel->all();
dd($users->all()); 输出collection
使用toArray()方法 将对象转化成数组形式
dd($users->all()->toArray());
关于collection对象的方法 使用collect将数据封装成collection对象
$arr = ["name" => "Lucy", "sex" => "female", "age" => 23];
$collection = collect($arr);
dd(get_class_methods($collection));
}
collection的常见方法:
all() 查看所有数据
first() 查看第一个数据
last() 返回最后一个数据
contains("Lucy") 检测某个数据值
has("sex") 检测某个索引或者属性
get("age") 获取某个值
toArray() 将结果转化成数组形式
toJson() 将结果转化成json数据格式
each( function () {}) 循环执行动作
3、获取用户提交数据
function () {
return Input::get("name");
获取某个get参数值
return Request::get("title", ["noTitle"]);
获取查询字符串的值
return Request::query(["name"]);
获取所有请求参数的值
return Request::all();
检测请求参数
return Rquest::has("name"); 检测name值是否存在
return Request::exists("name"); 检测name键是否存在
请求检索
return Request::only("name", "sex");
return Request::except("age");
return Request::url(); 请求的URL
return Request::fullUrl(); 完整的URL地址
请求历史
return Request::flash(); 存值 session中
return Request::old(); 取值
return Request::flashOnly("name"); 只存name
return Request::flashExcept("sex"); 除了sex都存
}
4、文件上传
function () {
获取所有上传文件 返回对象集合
dd(Request::file());
获取指定的上传文件
dd(Request::file("avartar"));
获取文件各部分信息
$file = Request::file("avartar"); hasFile("avartar") 判断和检测文件
$file->getClientOriginalName(); 原始的文件名
$file->getClientOriginalExtension(); 原始的文件后缀
}
5、表单验证
加载validator类
use Request,Validator;
function create() {
$rq = Request::all();
添加验证规则
$validator = Validator::make($rq, [
账号不能为空、不能重复
"uname" => "required|unique:admin_user",
"password" => "min:6|max:15", "between:6,15",
"phone" => "numeric"
]);
判断是否通过
if ($validator->fails()) {
return $validator->errors();
}
}
6、会话控制
function () {
查看所有session数据 默认存储了token和flash的值
Session::all()
添加session数据
Session::put("uname", "Lucy"); session(["uname" => "Lucy"]);
读取某个session数据
Session::get("uname");
销毁session
Session::forget("uname");
用完即销毁
Session::pull("uname");
检测session的值
Session::has("uname");
}
7、Hash加密
function () {
$password = Request::get("password");
$hashed = Hash::make($password);
session(["password" => $password]);
}
验证hash加密的方法
function () {
$password = Request::get("password");
if (Hash::check($password, session("password"))) { 验证参数有顺序之分
return "密码正确";
} else {
return "密码错误";
}
}
8、辅助函数
8-1 关于数组操作的
$arr = [1,2,3,4];
$arr2 = ["name" => "Lucy", "sex" => "female", "age" => 23];
第一个/最后一个元素
head/last($arr); 1
返回指定索引元素
array_only($arr2, ["name", "sex"]); ["name" => "Lucy", "sex" => "female"]
返回满足条件第一个元素
array_first($arr, function ($key, $value) {
return $value > 2;
});
添加一个元素值
array_add($arr2, "job" => "student");
返回指定以外的值
array_except($arr2, "job");
返回指定条件的元素
array_where($arr, function ($key, $value) {
return is_string($value);
});
8-2 关于路径的辅助函数
app_path()/config_path()/public_path()/storage_path()
8-3 关于字符串操作
$str = "apple";
智能转化成复数
str_plural($str);
判断起始/终止字符串
dd(starts_with/ends_with($str, "a"));
下划线转驼峰
camel_case("hello_world");
类名去除空间
class_basename("\App\User");
限制长度 剩余以....结尾
str_limit($str, 4);
判断模式 是否以app开头
str_is("app*", $str)