📜  FuelPHP-路由

📅  最后修改于: 2020-10-25 04:20:35             🧑  作者: Mango


路由映射请求URI到特定控制器的方法。在本章中,我们将详细讨论FuelPHP中的路由概念。

组态

路线配置文件位于fuel / app / config / routes.php 。默认的route.php文件定义如下-

 'welcome/index',   // The default route 
      '_404_'   => 'welcome/404',     // The main 404 route 
      'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'), 
   );

在此, _root_是预定义的默认路由,当使用根路径/来请求应用程序时,将与之匹配(例如http:// localhost:8080 /)_root_的值是控制器和匹配时要解决的操作。 welcome / index解析为Controller_Welcome控制器和action_index操作方法。同样,我们有以下保留的路线。

  • -没有指定URI时,默认路由。

  • 403 -被发现时HttpNoAccessException它抛出。

  • 404-当找不到页面时返回。

  • 500-当发现HttpServerErrorException时抛出。

简单路由

将该路由与请求URI进行比较。如果找到匹配项,则将请求路由到URI。简单的路由描述如下,

return array ( 
   'about'  => 'site/about', 
   'login' => 'employee/login', 
);

在这里,关于匹配http:// localhost:8080 / about并解析控制器Controller_Site和操作方法action_about

登录名与http:// localhost:8080 / login匹配,并解析控制器Controller_Login和操作方法action_login

高级路由

您可以在路由中包含任何正则表达式。 Fuel支持以下高级路由功能-

  • :any-这与URI中此后的所有内容匹配,与“ nothing”不匹配

  • :everything −类似于:any,但也匹配“ nothing”

  • :segment-这仅与URI中的1个段匹配,但该段可以是任何内容

  • :num-匹配任何数字

  • :alpha-这匹配任何字母字符,包括UTF-8

  • :alnum-这匹配任何字母数字字符,包括UTF-8

例如,以下路由匹配URI http:// localhost:8080 / hello / FuelPHP并解析控制器, Controller_Welcome和操作action_hello

'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'),

Controller_Welcome中的相应操作方法如下,

public function action_hello() { 
   $this->name = Request::active()->param('name', 'World'); 
   $message = "Hello, " . $this->name;  
   echo $message; 
}

在这里,我们使用Request类从URL获取名称参数。如果找不到该名称,则我们将World作为默认值。我们将在“请求响应”一章中学习“请求”类。

结果

控制器欢迎

HTTP方法动作

FuelPHP支持路由以匹配HTTP方法前缀操作。以下是基本语法。

class Controller_Employee extends Controller { 
   public function get_index() { 
      // called when the HTTP method is GET. 
   }  
   public function post_index(){ 
      // called when the HTTP method is POST. 
   } 
}

我们可以按照以下配置文件中的HTTP动词将您的URL路由到控制器和操作。

return array ( 
   // Routes GET /employee to /employee/all and POST /employee to /employee/create 
   ‘employee’ => array(array('GET', new Route(‘employee/all')), array('POST', 
      new Route(‘employee/create'))), 
);