分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

FuelPHP 系列(二) ------ route 路由

发布时间:2023-09-06 01:51责任编辑:熊小新关键词:PHP

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)‘);

FuelPHP 系列(二) ------ route 路由

原文地址:https://www.cnblogs.com/rendd/p/8964806.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved