新闻中心

php kohana框架设置路由

2025-12-05
浏览次数:
返回列表
Kohana路由通过Route::set()在bootstrap.php中定义,支持静态路径、动态参数、正则约束及模块化路径;需注意路由顺序从上到下匹配,具体规则应优先定义,避免被通配路由拦截,调试时可查看所有路由并清空缓存确保生效。

php kohana框架设置路由

在 Kohana 框架中设置路由,核心是通过 application/classes/Route.php 或更常见的是在 application/bootstrap.php 文件中调用 Route::set() 来定义规则。Kohana 的路由系统基于正则匹配和参数捕获,灵活且语义清晰。

基础路由写法(匹配静态路径)

最简单的路由将 URL 映射到指定控制器和动作:

Route::set('login', 'login')
    ->defaults(array(
        'controller' => 'auth',
        'action'     => 'login'
    ));

访问 /login 就会执行 Auth_Controller::login() 方法。

  • 第一个参数 'login' 是路由名(用于生成 URL 时引用,如 URL::site(Route::get('login')->uri())
  • 第二个参数 'login' 是匹配的 URI 模式(不带开头斜杠)
  • defaults() 指定默认的控制器、动作,也可加 'directory'(如后台模块)

带参数的动态路由

用冒号加名称定义可变段,支持正则约束:

Route::set('article', 'article/<id>(/<title>)', array('id' => '\d+'))
    ->defaults(array(
        'controller' => 'article',
        'action'     => 'view'
    ));

匹配 /article/123/article/123/my-post,其中 <id></id> 必须为数字,<title></title> 是可选段。

YIXUNCMS中秋专版2.0.4 YIXUNCMS中秋专版2.0.4

系统介绍:YIXUNCMS中专专版是易迅软件工作室在中秋节来临之即推出的专题模板建站系统,使用增强版后台管控系统,板板设计符合节日特点。易迅软件工作室恭祝全国人民中秋快乐。特别提示:由于网站页面的不同设计,部分后台功能未在前端进行体现。系统特点:1、采用目前流行的PHP语言编写,底层采用超轻量级框架作为系统支撑;2、页面布局使用DIV+CSS技术,遵循WEB标准,及大提高页面的浏览速度;3、使用应

YIXUNCMS中秋专版2.0.4 0 查看详情 YIXUNCMS中秋专版2.0.4
  • <id></id><title></title> 会作为参数传入 action,例如 public function action_view($id, $title = NULL)
  • 括号包裹的部分表示可选;正则约束写在第三个参数数组里,键对应占位符名
  • 未约束的参数默认等价于 '[^/]+(非斜杠任意字符)

模块化与命名空间路由(Kohana 3.3+)

若使用模块(如 admin),可在路由中指定 directory,或配合命名空间自动解析:

Route::set('admin_dashboard', 'admin/dashboard')
    ->defaults(array(
        'directory'  => 'admin',
        'controller' => 'dashboard',
        'action'     => 'index'
    ));

这会让框架去 application/classes/Controller/Admin/Dashboard.php(或模块路径)中找类。

  • Kohana 自动将下划线或短横线转为驼峰/目录结构,如 admin/dashboardController_Admin_Dashboard
  • 确保类文件路径与命名空间一致,否则抛出 ClassNotFoundException
  • 模块路由建议统一前缀(如 admin/*),便于权限或中间件统一拦截

路由优先级与顺序很重要

Kohana 按定义顺序从上到下匹配,**越具体的路由越要靠前**,否则可能被泛用路由截胡:

// ✅ 正确:先定义精确路由
Route::set('api_user', 'api/user/<id>', array('id' => '\d+'))
    ->defaults(array('controller' => 'api', 'action' => 'user'));

// ❌ 错误:放在这后面会被下面的通配路由吞掉
Route::set('default', '(<controller>(/<action>(/<id>)))')
    ->defaults(array('controller' => 'welcome', 'action' => 'index'));
  • 内置的 default 路由通常放在最后,作为兜底
  • 调试时可用 var_dump(Route::all()) 查看当前所有已注册路由
  • 开发阶段建议开启 Kohana::init(['errors' => TRUE]),路由不匹配时会明确报错

基本上就这些。Kohana 路由不复杂但容易忽略顺序和正则细节,写完记得清缓存(APPPATH.'cache')再测试。

以上就是php kohana框架设置路由的详细内容,更多请关注其它相关文章!


# 下划线  # 义马购物网站建设  # 郑州seo排名收费  # 湖北seo培训加盟  # 抖音关键词运营排名优化  # 武隆网站建设费用  # 天津综合网站建设系列书  # 茂名网站建设的工作室  # 北京seo排名首荐乐云seo专业  # 一体化全网营销引流推广  # 大庆seo推广排行榜  # 也可  # php  # 在这  # 第一个  # 放在  # 是在  # 就会  # 转数  # 从上到下  # 中秋  # app  # bootstrap  # 路由 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 微信网页版官方入口直达 微信网页版网页版登录使用方法  如何将HTML表格多行数据保存到Google Sheet  在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析  如何将HTML表格多行数据保存到Google Sheets  谷歌浏览器浏览体验优化_谷歌浏览器新版直连永久可用提示  韩剧圈正版入口页面_韩剧圈官网登录链接  限制HTML日期输入框的日期选择范围  学习通网页版快速入口 学习通官网网页版直接打开  msn官网入口地址手机版 msn官方网站手机最新链接  蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台  小米汽车11月交付量突破40000台!雷军:将继续努力  J*a里如何实现线程安全的懒加载单例_懒加载单例实现方法解析  Golang如何使用context实现超时取消_Golang context超时取消模式实践  CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示  谷歌google账号注册详细步骤 谷歌账号注册官方教程  BetterDiscord插件中安全更新用户简介的实践指南  J*aScript中向JSON对象添加新属性的正确姿势  树莓派传感器触发:通过Twilio API发送WhatsApp消息教程  CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题  苹果手机指南针不准怎么校准 传感器校准方法详解【建议收藏】  J*a递归快速排序中静态变量导致数据累积问题的解决方案  海棠电脑版入口_通过电脑访问海棠官网阅读  深入理解Promise链:如何在catch后中断then的执行  Android Studio计算器C键功能异常排查与修复教程  《主播少女的秘密账号迷宫》首支宣传片  CSS响应式网页如何实现主次模块比例自适应_flex-grow与flex-shrink调整  CSS子选择器:如何区分并样式化嵌套列表的子层级  红果短剧网页版官网入口 官方最新网址发布  在Go开发中优雅管理ListenAndServe进程:GoSublime集成方案  可靠CSGO开箱平台解析 CSGO开箱网合集  抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩  QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台  如何在网页中实现特定地点的随机图片展示  Python Socket多播通信中指定源IP地址的实践指南  Composer的 archive 命令怎么用_快速打包你的PHP项目及其Composer依赖  sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件  汽车之家官方网站官网入口_汽车之家网页版直接进入  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  千牛数据看板网页版_千牛数据看板网页版访问方法  composer的"require-dev"部分是用来做什么的?  虫虫漫画精品漫画官网_虫虫漫画精品漫画官网进入精品漫画  Fabric模组开发:自定义物品与物品组的现代管理方法  qq游戏手机版下载安装_qq游戏移动端入口  Python字典中优雅地迭代剩余元素的方法  铁路12306的积分有效期是多久_铁路12306积分有效期说明  Win11怎么开启省电模式_Win11电池节电模式自动开启  Selenium Python中处理点击后新窗口加载冻结问题的策略与实践  为什么我的微信朋友圈看不到别人的更新_微信朋友圈更新显示异常解决方法  在Pyomo中实现基于变量的条件约束:Big-M方法详解  在J*a项目里如何构建对象之间的契约_接口约束的实际落地 

搜索