Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
檀越@新空间
Coding Tree
提交
524d30f0
C
Coding Tree
项目概览
檀越@新空间
/
Coding Tree
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Coding Tree
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
524d30f0
编写于
7月 21, 2022
作者:
彭世瑜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix
上级
3beac823
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
460 addition
and
1 deletion
+460
-1
blog/laravel/index.md
blog/laravel/index.md
+6
-1
blog/laravel/paginate.md
blog/laravel/paginate.md
+70
-0
blog/laravel/validate.md
blog/laravel/validate.md
+383
-0
doc/css.md
doc/css.md
+1
-0
未找到文件。
blog/laravel/index.md
浏览文件 @
524d30f0
...
@@ -62,5 +62,10 @@ dev:
...
@@ -62,5 +62,10 @@ dev:
[
中间件 Middleware
](
/blog/laravel/middleware.md
)
[
中间件 Middleware
](
/blog/laravel/middleware.md
)
Blade模板(略)
https://www.bilibili.com/video/BV1gE411j78F?p=38&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da
[
表单验证validate
](
/blog/laravel/validate.md
)
\ No newline at end of file
[
数据分页 paginate
](
/blog/laravel/paginate.md
)
https://www.bilibili.com/video/BV1gE411j78F?p=43&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da
\ No newline at end of file
blog/laravel/paginate.md
0 → 100644
浏览文件 @
524d30f0
# 数据分页 paginate
创建分页
数据库DB方式的分页
```
php
// 每页显示 5 条
$users
=
DB
::
table
(
'users'
)
->
paginate
(
5
);
```
模型创建分页
```
php
$users
=
User
::
paginate
(
5
);
```
分页按钮直接使用links()方法即可,它继承了Bootstrap样式
```
php
{{
$list
->
links
()}}
```
使用withPath()方法,更改路由地址
```
php
$users
->
withPath
(
'/users/list'
);
```
指定参数,可以使用appends()方法
```
php
{{
$list
->
appends
([
'sort'
=>
'id'
])
->
links
()}}
```
保存所有查询参数,可以使用withQueryString()方法;
```
php
{{
$list
->
withQueryString
()
->
links
()}}
```
使用fragment()方法给URL地址#符号
```
php
{{
$list
->
fragment
(
'element'
)
->
links
()}}
```
大量分页中...省略分页数量,使用onEachSize()方法可设置外侧数量,默认3
```
php
{{
$list
->
onEachSide
(
1
)
->
links
()}}
```
更多方法
| 方法 | 描述
| - | -
| $results->count() | 获取当前页数据的数量
| $results->currentPage() | 获取当前页页码
| $results->hasPages() | 是否有多页
| $results->hasMorePages() | 是否有更多页
| $results->firstItem() | 获取结果集中第一条数据的结果编号
| $results->getOptions() | 获取分页器选项
| $results->items() | 获取当前页的所有项
| $results->lastItem() | 获取结果集中最后一条数据的结果编号
| $results->lastPage() | 获取最后一页的页码。 (在 simplePaginate 无效)
| $results->nextPageUrl() | 获取下一页的 URL
| $results->onFirstPage() | 当前页是否为第一页
| $results->perPage() | 每页的数据条数
| $results->getUrlRange($start, | 创建分页 URL 的范围
| $end) |
| $results->previousPageUrl() | 获取前一页的 URL
| $results->total() | 数据总数(在 simplePaginate 无效)
| $results->url($page) | 获取指定页的 URL
| $results->getPageName() | 获取分页的查询字符串变量
| $results->setPageName($name) | 设置分页的查询字符串变量
```
\ No newline at end of file
blog/laravel/validate.md
0 → 100644
浏览文件 @
524d30f0
# 表单验证validate
## 表单快速验证
两个路由:一个表单,一个处理表单
```
php
//表单页
Route
::
get
(
'/task/form'
,
'TaskController@form'
);
//接收页
Route
::
post
(
'/task/receive'
,
'TaskController@receive'
);
```
表单
```
html
<form
action=
"/task/receive"
method=
"post"
>
@csrf
用户名:
<input
type=
"text"
name=
"username"
>
密码:
<input
type=
"password"
name=
"password"
>
<button
type=
"submit"
>
提交
</button>
</form>
```
表单处理页
```
php
public
function
receive
(
Request
$request
)
{
// 验证请求方式
// 左边为验证字段,右边为验证规则,每个规则竖线隔开
// 比如 required 不得为空,min 不等小于,max 不得大于
$request
->
validate
([
'username'
=>
'required|min:2|max:10'
,
'password'
=>
'required|min:6'
,
]);
// 只有通过才能执行下面的语句,否则返回表单页
return
'恭喜验证通过!'
;
}
```
如果验证没有被通过,会自动重定向到提交页,并将错误信息存储到session中
```
php
// 内部操作是通过中间件:Illuminate\View\Middleware\ShareErrorsFromSession
@
if
(
$errors
->
any
())
<
div
>
<
ul
>
@
foreach
(
$errors
->
all
()
as
$error
)
<
li
>
$error
</
li
>
@
endforeach
</
ul
>
</
div
>
@
endif
```
也可以单独设置错误信息,使用@error指令
```
php
@
error
(
'username'
)
<
div
>
{{
$message
}}
:
用户名非法
!</
div
>
@
enderror
@
error
(
'password'
)
<
div
>
{{
$message
}}
:
密码非法
!</
div
>
@
enderror
```
规则写法
```
php
//数组方式验证
$request
->
validate
([
'username'
=>
[
'required'
,
'min:2'
,
'max:10'
],
'password'
=>
[
'required'
,
'min:6'
]
]);
```
## 验证类的使用
创建一个验证类
```
bash
php artisan make:request Form
```
```
php
// Http\Request\Form.php
public
function
authorize
()
{
// 默认 false,为关闭授权,关闭状态会 403
// 比如判断这个用户是否有操作权限
return
true
;
}
public
function
rules
()
{
return
[
//规则
'username'
=>
'required|min:2|max:10'
,
'password'
=>
'required|min:6'
,
];
}
```
使用验证类
```
php
// 通过验证类验证
$request
->
validated
();
```
设置成中文提示
```
php
//验证器类方法
public
function
messages
()
{
return
[
'username.required'
=>
'用户名不得为空~'
,
'username.min'
=>
'用户名不得小于2位~'
,
'username.max'
=>
'用户名不得大于10位~'
,
'password.required'
=>
'密码不得为空'
,
'password.min'
=>
'密码不得小于6位~'
,
]
}
```
自定义属性名,而其它采用默认提示
```
php
// 提示语言包在:resources\lang\en\validation.php
public
function
attributes
()
{
return
[
'username'
=>
'用户名'
,
];
}
```
请求验证之前,修改提交的请求数据
```
php
protected
function
prepareForValidation
()
{
$this
->
merge
([
'username'
=>
'Mr.Lee'
]);
}
```
## 创建手动验证
快速验证方式
```
php
$validateData
=
$request
->
validate
([
'username'
=>
'required|min:2|max:10'
,
'password'
=>
'required|min:6'
,
]);
//验证通过后得到提交的值
dd
(
$validateData
);
```
创建手动验证
```
php
//手动创建验证器
$validator
=
Validator
::
make
(
$request
->
post
(),
[
'username'
=>
'required|min:2|max:10'
,
'password'
=>
'required|min:6'
,
]);
//如果没有通过的话
if
(
$validator
->
fails
())
{
//跳转后,并将错误保存,还可以返回上一次填的信息
return
redirect
(
'/task/form'
)
->
withErrors
(
$validator
)
->
withInput
();
}
```
```
php
// 快速验证,也支持 old 记忆上一次表单数据的功能
用户名
:<
input
type
=
"text"
name
=
"username"
value
=
"
{
{old('username')}
}
"
>
```
设置$errors的多个错误包
```
php
$validator
=
Validator
::
make
(
$request
->
post
(),
[
'username'
=>
'required|min:2|max:10'
,
'password'
=>
'required|min:6'
,
])
->
validateWithBag
(
'post'
);
// 设置快速验证和手动验证
if
(
$validator
->
fails
())
{
//适合手动验证
return
redirect
(
'/task/form'
)
->
withErrors
(
$validator
,
'post'
)
->
withInput
();
}
{{
--
多个错误包调用
--
}}
{{
$errors
->
post
}}
```
在验证完毕之前,通过附加回调添加更多的自定义错误信息
```
php
//验证钩子
$validator
->
after
(
function
(
$validator
)
{
$validator
->
errors
()
->
add
(
'info'
,
'隐藏字段info的值不存在'
);
});
```
$errors对象方法
```
php
any
()
判断
all
()
获取全部
{{
--
获取指定字段第一条信息
--
}}
{{
$errors
->
first
(
'username'
)}}
{{
--
判断指定字段是否有错误信息
--
}}
{{
$errors
->
has
(
'username'
)}}
```
## 验证规则大全
文档:https://learnku.com/docs/laravel/9.x/validation/12219#available-validation-rules
```
php
Accepted
Accepted
If
Active
URL
After
(
Date
)
After
Or
Equal
(
Date
)
Alpha
Alpha
Dash
Alpha
Numeric
Array
Bail
Before
(
Date
)
Before
Or
Equal
(
Date
)
Between
Boolean
Confirmed
Current
Password
Date
Date
Equals
Date
Format
Declined
Declined
If
Different
Digits
Digits
Between
Dimensions
(
Image
Files
)
Distinct
Email
Ends
With
Enum
Exclude
Exclude
If
Exclude
Unless
Exclude
Without
Exists
(
Database
)
File
Filled
Greater
Than
Greater
Than
Or
Equal
Image
(
File
)
In
In
Array
Integer
IP
Address
MAC
Address
JSON
Less
Than
Less
Than
Or
Equal
Max
MIME
Types
MIME
Type
By
File
Extension
Min
Multiple
Of
Not
In
Not
Regex
Nullable
Numeric
Password
Present
Prohibited
Prohibited
If
Prohibited
Unless
Prohibits
Regular
Expression
Required
Required
If
Required
Unless
Required
With
Required
With
All
Required
Without
Required
Without
All
Required
Array
Keys
Same
Size
Sometimes
Starts
With
String
Timezone
Unique
(
Database
)
URL
UUID
```
(1) alpha_dash:字段必须由字母、数字破折号(-)和下划线(_)构成;
```
php
'username'
=>
'required|alpha_dash'
,
```
(2) between:字段长度必须在指定的区间之间;
```
php
'username'
=>
'required|between:2,6'
,
```
(3) .size:6:字段长度固定在某个值;
```
php
'username'
=>
'required|size:6'
,
```
(4) .email:字段必须符合 email 格式;
```
php
'username'
=>
'required|email'
,
```
(5) .unique:users:字段值是唯一的,通过指定数据表字段检查;
```
php
'username'
=>
'required|unique:users'
,
```
(6) .confiremed:这个基本用于密码和密码确认,固定了字段名称;
```
php
'password'
=>
'required|min:6|confirmed'
,
<
input
type
=
"password"
name
=
"password_confirmation"
>
```
(7) different:password:字段和另一个字段不可以相同的验证;
```
php
'username'
=>
'required|different:password'
,
```
(8) .ip/json:字段是否是 ip 地址/字段是否是 json 数据;
```
php
'username'
=>
'required|ip'
,
'username'
=>
'required|json'
,
```
其它用法
Rule类
```
php
'username'
=>
'required|in:tom,jack,lusy'
,
'username'
=>
[
'required'
,
Rule
::
in
([
'tom'
,
'jack'
,
'lusy'
])
],
```
可以结合where来限制验证范围等操作
```
php
//验证是否重复
'username'
=>
Rule
::
unique
(
'users'
),
'username'
=>
Rule
::
unique
(
'users'
)
->
where
(
function
(
$query
)
{
$query
->
where
(
'id'
,
20
);
}),
```
doc/css.md
浏览文件 @
524d30f0
...
@@ -146,3 +146,4 @@ cssgr.id [https://cssgr.id/](https://cssgr.id/)
...
@@ -146,3 +146,4 @@ cssgr.id [https://cssgr.id/](https://cssgr.id/)
CSS Diner:
[
https://flukeout.github.io/
](
https://flukeout.github.io/
)
CSS Diner:
[
https://flukeout.github.io/
](
https://flukeout.github.io/
)
[
Flex Cheatsheet
](
https://yoksel.github.io/flex-cheatsheet/
)
: Demos for W3C CSS Flexbox Specification http://www.w3.org/TR/css-flexbox-1/
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录