FuelPHP 中,默认可以通过 /controller_name/function_name 这种方式来访问,也可以通过自定义路由来访问。

路由配置在 /fuel/app/config/routes.php 文件中。

一、最简单的路由设置,键值对形式。

  return array(
  'article' => 'article/index',
  'article/add' => 'article/create',
  'article/edit' => 'article/edit',
  );

  键名是 URL 中输入的内容,对应的值为请求的控制器中的方法。

二、在路由中加入一些规则

:any 可以匹配任意字符,但不能为空
:everything 匹配任何字符
:segment 匹配 URL 的一部分,这一部分可以是任何字符,
:num 匹配任意数字
:alpha 匹配希腊字母
:alnum 匹配任意字母和数字
  return array(
  'article/(:any)' => 'article/indexxxxx',
  'article(:everything)' => 'article/add',
  '(:segment)/article' => 'test/article',
    '(:segment)article' => 'test1/article',
  '(\d{2})/article' => 'site2/article',
    'blog/:year/:month/:id' => 'blog/entry',
  );

三、根据不同请求方式,把 URL 路由到控制器的方法,有 GET、POST、DELETE 等。

  return array(
  'blog' => array(array('GET', new Route('blog/all')), array('POST', new Route('blog/create'))),
    'blog/(:any)' => array(array('GET', new Route('blog/show/$1'), true)),
  );

  这个也可以和上面的规则结合使用。

四、设置有名字的路由

  return array(
  'admin/start/overview' => array('admin/overview', 'name' => 'admin_overview'),
  );

  静态页面中,可以用路由 name 实现点击跳转

  echo Html::anchor(Router::get('admin_overview'), 'Overview');
  <a href="{Router::get('admin_overview')}">Overview</a>

五、core 目录下的 Route 类

  1、 add($path, $options = null, $prepend = false, $case_sensitive = null)  添加一条路由

    $path  路由指向的控制器的方法

    $options  路由中的参数

    $prepend  true 路由为已经加载的路由做准备

    $case_sensitive  是否大小写敏感

  Router::add('this/that', 'something/else');  //类似一中的简单键值对

  2、 get($name, $named_params = array())  通过已定义的路由名字,获取路由

    $name  已定义的路由名称

    $named_params  路由参数

  //1、
  return array(
  'thread/(?P<thread_id>\d+?)/post' => array('post', 'name' => 'post'),
  );   //根据上面定义的路由,下面这些将返回 'thread/1/post':
  echo Router::get('post', array('thread_id' => 1));
  echo Router::get('post', array('$1' => 1));
  echo Router::get('post', array(1));   //2、
  return array(
  'country/(?P<country>\d+?)/state/(?P<state>\d+?)/location' => array('location', 'name' => 'location'),
  );   // 根据上面定义的路由,下面这些将返回 'country/japan/state/tokyo/location':
  echo Router::get('location', array('country' => 'japan', 'state' => 'tokyo'));
  echo Router::get('location', array('$1' => 'japan', '$2' => 'tokyo'));
  echo Router::get('location', array('japan', 'tokyo'));
  echo Router::get('location', array('country' => 'japan', 'tokyo'));
  echo Router::get('location', array('$1' => 'japan', 'tokyo'));

  3、 delete($path, $case_sensitive = null)  删除已定义的路由

    $path  路由 URL

    $case_sensitive  是否大小写敏感

  // 删除路由 'this/that'
  Router::delete('this/that');   // 删除路由 'this/that' 和'some/other'
  Router::delete(array('this/that', 'some/other'));   // 设置路由区分大小写
  Router::delete('this/that', true);   // 删除 module controller 的所有路由
  Router::delete('module/controller(:any)');

最新文章

  1. git rebase
  2. 关于SQL储存过程中输出多行数据
  3. android TextView多行文本(超过3行)使用ellipsize=&quot;end&quot;属性无效问题的解决方法
  4. php socket
  5. 阻塞与非阻塞的IO网络读写
  6. HDU 2512 一卡通大冒险
  7. Oracle 6 - 锁和闩 - transaction的可串行化
  8. PowerDesigner15(16)在生成SQL时报错Generation aborted due to errors detected during the verification of the mod
  9. Flex 自动获取焦点 监听全局键盘事件
  10. kvm安装及配置
  11. 关于微信端不支持window.location.reload()
  12. UWP--页面传值
  13. wtforms快速使用和源码分析(基于flask)
  14. 【BZOJ3236】【AHOI2013】作业 线段树 分治 树状数组
  15. MongoDB下Map-Reduce使用简单翻译及示例
  16. 关于 Docker Hub 上不能注册 Docker ID 的问题
  17. TensorFlow Android Camera Demo 使用android studio编译安装和解决Execution failed for task &#39;:buildNativeBazel&#39;报错
  18. Android Studio快捷键——编辑篇
  19. 谈windows中的句柄
  20. TCP\UDP客户—服务器程序设计基本框架流程图

热门文章

  1. ajax回退的解决方案
  2. day05-列表类型
  3. Linux中一个网卡含有多个IP,将从IP升级为主IP的方法
  4. c# HttpWebRequest Cookie 设置到 webBrowser 控件
  5. Exp02
  6. pandas:根据行间差值进行数据合并
  7. &lt;转&gt;性能测试浅谈
  8. 前端项目模块化的实践3:使用 TypeScript 的收益
  9. Jmeter+ant+Jenkins构建接口自动化测试
  10. MatCap冰冻效果Shader