在项目的配置目录下,创建route.php
一个空的route配置文件:
~~~
<?php
return array(
'route' => array(
)
);
~~~
所有配置都在
~~~
'route' => array(
)
~~~
中编写。
一个完整的路由配置示例:
~~~
<?php
return array(
'route' => array(
// 默认不指定文件时使用的文件名。可不设置。
'default_file' => 'index.php',
// 是否隐藏默认文件名,不设置时默认为false
'hide_default_file' => true,
// 定义所有入口文件的权限,可不设置
'entrance' => array(
'index.php' => array(
// 使用允许规则
'priority' => 'allow',
// 允许访问Public模块下所有控制器所有动作
'allow' => array('Public/*/*'),
// 无效
'deny' => array('Setting/*/*'),
),
'admin.php' => array(
// 使用拒绝规则
'priority' => 'deny',
// 无效
'allow' => array('Public/*/*'),
// 禁止访问Setting模块下所有控制器所有动作,禁止访问Public/Index/index
'deny' => array('Setting/*/*','Public/Index/index'),
// 默认缺省的模块/控制器/动作,*号代表所有
'default_mca' => 'Admin/Index/*'
)
),
// 路由规则
'rules' => array(
// URL => 模块/控制器/动作名
'a.php@/b/[b:word:3]' => 'Home/Index/$1',
'a/[alias:word]' => '>/Home/Index/$1',
'b/[b:word:1:2][c:word:3]' => 'Home/Index/$1$2',
'login' => 'Admin/User/login',
'c/[id:\d+]' => 'Home/Index/test'
)
)
);
~~~
URL格式:
~~~
[文件名@]地址
~~~
可以在地址中定义各种变量,还可以用类型长度来限定。
格式:
~~~
[变量名[:类型[:长度最小值[:长度最大值]]]]
~~~
可选类型:
| 名称 | 支持长度 | 描述 |
| -- | -- | -- |
| int | √ | 整数 |
| double | | 小数 |
| letter | √ | 大小写字母 |
| big_letter | √ | 大写字母 |
| small_letter | √ | 小写字母 |
| word | √ | 包含大小写英文字母、0-9数字、_- |
| 留空 | √ | 所有字符 |
| 正则表达式 | √ | 原样代入 |
下面主要讲解的是rules中的路由规则。
~~~
'a.php@/b/[b:word:3]' => 'Home/Index/$1'
~~~
生效的URL:
~~~
http://localhost/a.php/b/abc
~~~
对应模块控制器动作:
~~~
Home/Index/abc
~~~
如果在对应动作方法中定义参数$b,则会把abc传入$b参数中。
* * * * *
~~~
'a/[alias:word]' => '>/Home/Index/$1'
~~~
生效的URL:
~~~
http://localhost/a/a123
~~~
对应模块控制器动作:
~~~
Home/Index/a123
~~~
如果在对应动作方法中定义参数$alias,则会把a123传入$alias参数中。
* * * * *
~~~
'b/[b:word:1:2][c:word:3]' => 'Home/Index/$1$2'
~~~
生效的URL:
~~~
http://localhost/a/test
http://localhost/a/login
~~~
对应模块控制器动作:
~~~
Home/Index/a123
~~~
不生效的URL:
~~~
http://localhost/a/hehehe
http://localhost/a/log
~~~
如果在对应动作方法中定义参数$b或$c,则会把对应值传入参数中。
* * * * *
~~~
'login' => 'Admin/User/login'
~~~
生效的URL:
~~~
http://localhost/login
~~~
对应模块控制器动作:
~~~
Admin/User/login
~~~
起到了伪静态的作用,当然你也可以定义为
~~~
'login.html' => 'Admin/User/login'
~~~
这时访问
~~~
http://localhost/login.html
~~~
同样对应模块控制器动作:
~~~
Admin/User/login
~~~
* * * * *
~~~
'c/[id:\d+]' => 'Home/Index/test'
~~~
生效的URL:
~~~
http://localhost/c/123
~~~
对应模块控制器动作:
~~~
Home/Index/test
~~~
如果在对应动作方法中定义参数$id,则会把123传入$id参数中。
- 序言
- 有些话想说
- 基础入门
- 简介
- 下载YurunPHP
- 运行环境
- 开发规范
- 目录结构
- 模块
- 控制器
- 项目配置
- 入口文件
- 项目目录结构
- 配置文件
- 框架编译
- 项目部署
- 控制器
- 创建控制器
- 加载模版显示页面
- AJAX返回数据
- 模型
- 创建模型
- 实例化模型
- 数据管理
- 连贯操作
- distinct
- field
- from
- where
- wherePk
- group
- having
- order
- limit
- join
- page
- headTotal/footTotal
- 连贯操作收尾方法
- select
- selectPage
- buildSQL
- selectValue
- selectBy
- getBy
- getByPk
- random
- inc
- dec
- add
- edit
- delete
- 合计函数
- save
- 执行SQL语句
- 创建数据并验证
- 字段映射
- GET/POST/COOKIE/REQUEST
- Cookie
- Session
- 数据库操作
- 配置文件
- 常用操作
- 查询记录
- 存储过程
- 数据库函数
- MSSQL
- 视图
- 调用视图
- 给视图传值
- 模版引擎
- 输出
- 使用PHP代码
- 模版标签
- if
- switch
- for
- counter
- foreach
- include
- js/css/image
- url
- 模版常量替换
- 自定义控件
- 通用属性用法
- 数据集绑定
- 下拉框(select)
- 单选框(radio)
- 单选框组(radiogroup)
- 选择框(checkbox)
- 选择框组(checkboxgroup)
- 表格(table)
- 文本框(textbox)
- 分页条(pagebar)
- 数据验证
- 验证方法
- between
- betweenEqual
- empty_str
- not_empty_str
- regex
- length
- lengthChar
- mobile
- tel
- phone
- postcode
- url
- ip
- lt/gt/ltEqual/gtEqual
- equal/unequal
- in/notin
- idcard
- 路由
- 路由配置
- 自定义分层
- 缓存
- 文件缓存
- 配置
- PHP数组配置
- 过滤域名
- 日志
- 文件日志
- 事件&插件机制
- 框架事件列表
- 多语言支持
- 定时任务
- API接口开发